diff --git a/frontend_tests/node_tests/dispatch.js b/frontend_tests/node_tests/dispatch.js index d4c194a027..7317a9d90d 100644 --- a/frontend_tests/node_tests/dispatch.js +++ b/frontend_tests/node_tests/dispatch.js @@ -799,10 +799,10 @@ with_overrides(function (override) { override('stream_list.update_streams_sidebar', noop); global.with_stub(function (stub) { override('unread_ops.process_read_messages_event', noop); - override('ui.remove_message', stub.f); + override('ui.remove_messages', stub.f); dispatch(event); - const args = stub.get_args('message_id'); - assert_same(args.message_id, 1337); + const args = stub.get_args('message_ids'); + assert_same(args.message_ids, [1337]); }); global.with_stub(function (stub) { override('unread_ops.process_read_messages_event', stub.f); diff --git a/static/js/server_events_dispatch.js b/static/js/server_events_dispatch.js index cc52c7ed33..d494041b52 100644 --- a/static/js/server_events_dispatch.js +++ b/static/js/server_events_dispatch.js @@ -37,12 +37,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) { stream_list.update_streams_sidebar(); } - // TODO: Do this as a bulk process. - // We may need to change narrow too, - // but that maybe confusing to users. - for (const msg_id of msg_ids) { - ui.remove_message(msg_id); - } + ui.remove_messages(msg_ids); break; } diff --git a/static/js/ui.js b/static/js/ui.js index 07644c3896..17ce56e3c9 100644 --- a/static/js/ui.js +++ b/static/js/ui.js @@ -114,15 +114,19 @@ exports.show_message_failed = function (message_id, failed_msg) { }); }; -exports.remove_message = function (message_id) { +exports.remove_messages = function (message_ids) { + const msg_ids_to_rerender = []; for (const list of [message_list.all, home_msg_list, message_list.narrowed]) { if (list === undefined) { continue; } - const row = list.get_row(message_id); - if (row !== undefined) { - list.remove_and_rerender([{id: message_id}]); + for (const message_id of message_ids) { + const row = list.get_row(message_id); + if (row !== undefined) { + msg_ids_to_rerender.push({id: message_id}); + } } + list.remove_and_rerender(msg_ids_to_rerender); } };