From 40c2a82e4ea46f6f4dc31caaa3ba5b2f1a3d3ed0 Mon Sep 17 00:00:00 2001 From: Aman Agrawal Date: Sun, 17 May 2020 03:18:44 +0530 Subject: [PATCH] message_events: Update edited msgs to be rerendered together. This significantly reduces the time required to handle events like stream & topic name edit for topics. Verified using the Chrome Profiler for a topic with 100 messages: With this commit: 0.64s to move the topic to a different stream. Without this commit: 5.5s. --- static/js/message_events.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/static/js/message_events.js b/static/js/message_events.js index 70f5858e6c..44fd4e58b6 100644 --- a/static/js/message_events.js +++ b/static/js/message_events.js @@ -221,6 +221,7 @@ exports.update_messages = function update_messages(events) { } } + const messages_to_rerender = []; for (const id of event.message_ids) { const msg = message_store.get(id); if (msg === undefined) { @@ -265,10 +266,11 @@ exports.update_messages = function update_messages(events) { // remove the message from the current/narrowed message list. const cur_row = current_msg_list.get_row(id); if (cur_row !== undefined) { - current_msg_list.remove_and_rerender([{id: id}]); + messages_to_rerender.push({id: id}); } } } + current_msg_list.remove_and_rerender(messages_to_rerender); } if (event.orig_content !== undefined) {