refactor: Call compose_fade without triggers.

We are trying to phase out the trigger-event way
of telling modules to do something.

In this case we not only remove the indirection
of the event handler, but we also get to remove
`compose_fade` from the `ui_init` startup sequence.

This also has us update `compose_fade` outside
the loop, although that's only a theoretical
improvement, since I don't think `peer_add` events
every actually include multiple streams.

To make the dispatch tests a little flatter, I
added a one-line change to zjsunit to add
`make_stub` to `global`.

To manually test:
    * have Aaron reply to Denmark (keep compose box open)
    * have Iago add Hamlet to Denmark
    * have Hamlet unsubscribe
This commit is contained in:
Steve Howell
2020-06-12 12:39:14 +00:00
committed by Tim Abbott
parent 9d9342c2a5
commit b965766f87
6 changed files with 8 additions and 9 deletions

View File

@@ -646,6 +646,9 @@ with_overrides(function (override) {
}); });
}); });
const compose_fade_stub = global.make_stub();
override('compose_fade.update_faded_users', compose_fade_stub.f);
event = event_fixtures.subscription__peer_add; event = event_fixtures.subscription__peer_add;
global.with_stub(function (stub) { global.with_stub(function (stub) {
override('stream_data.add_subscriber', stub.f); override('stream_data.add_subscriber', stub.f);
@@ -654,6 +657,7 @@ with_overrides(function (override) {
assert_same(args.sub, event.subscriptions[0]); assert_same(args.sub, event.subscriptions[0]);
assert_same(args.user_id, 555); assert_same(args.user_id, 555);
}); });
assert.equal(compose_fade_stub.num_calls, 1);
event = event_fixtures.subscription__peer_remove; event = event_fixtures.subscription__peer_remove;
global.with_stub(function (stub) { global.with_stub(function (stub) {
@@ -663,6 +667,7 @@ with_overrides(function (override) {
assert_same(args.sub, event.subscriptions[0]); assert_same(args.sub, event.subscriptions[0]);
assert_same(args.user_id, 555); assert_same(args.user_id, 555);
}); });
assert.equal(compose_fade_stub.num_calls, 2);
event = event_fixtures.subscription__remove; event = event_fixtures.subscription__remove;
let stream_id_looked_up; let stream_id_looked_up;

View File

@@ -108,7 +108,6 @@ zrequire('tutorial');
zrequire('notifications'); zrequire('notifications');
zrequire('pointer'); zrequire('pointer');
zrequire('pm_conversations'); zrequire('pm_conversations');
zrequire('compose_fade');
zrequire('pm_list'); zrequire('pm_list');
zrequire('list_cursor'); zrequire('list_cursor');
zrequire('keydown_util'); zrequire('keydown_util');

View File

@@ -44,6 +44,7 @@ global.to_$ = () => window;
// Set up stub helpers. // Set up stub helpers.
const stub = require('./stub.js'); const stub = require('./stub.js');
global.make_stub = stub.make_stub;
global.with_stub = stub.with_stub; global.with_stub = stub.with_stub;
// Set up fake jQuery // Set up fake jQuery

View File

@@ -239,11 +239,4 @@ exports.update_rendered_message_groups = function (message_groups, get_element)
} }
}; };
exports.initialize = function () {
$(document).on('peer_subscribe.zulip peer_unsubscribe.zulip', function () {
exports.update_faded_users();
});
};
window.compose_fade = exports; window.compose_fade = exports;

View File

@@ -335,6 +335,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
blueslip.warn('Cannot process peer_add event'); blueslip.warn('Cannot process peer_add event');
} }
} }
compose_fade.update_faded_users();
} else if (event.op === 'peer_remove') { } else if (event.op === 'peer_remove') {
for (const sub of event.subscriptions) { for (const sub of event.subscriptions) {
if (stream_data.remove_subscriber(sub, event.user_id)) { if (stream_data.remove_subscriber(sub, event.user_id)) {
@@ -343,6 +344,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) {
blueslip.warn('Cannot process peer_remove event.'); blueslip.warn('Cannot process peer_remove event.');
} }
} }
compose_fade.update_faded_users();
} else if (event.op === 'remove') { } else if (event.op === 'remove') {
for (const rec of event.subscriptions) { for (const rec of event.subscriptions) {
const sub = stream_data.get_sub_by_id(rec.stream_id); const sub = stream_data.get_sub_by_id(rec.stream_id);

View File

@@ -475,7 +475,6 @@ exports.initialize_everything = function () {
presence.initialize(presence_params); presence.initialize(presence_params);
activity.initialize(); activity.initialize();
emoji_picker.initialize(); emoji_picker.initialize();
compose_fade.initialize();
pm_list.initialize(); pm_list.initialize();
topic_list.initialize(); topic_list.initialize();
topic_zoom.initialize(); topic_zoom.initialize();