diff --git a/frontend_tests/node_tests/message_list.js b/frontend_tests/node_tests/message_list.js index 06c2273806..6dc9663449 100644 --- a/frontend_tests/node_tests/message_list.js +++ b/frontend_tests/node_tests/message_list.js @@ -172,36 +172,6 @@ run_test("message_range", () => { assert.deepEqual(list.message_range(-1, 40), [{id: 30}, {id: 40}]); }); -run_test("updates", () => { - const list = new MessageList({}); - list.view.rerender_preserving_scrolltop = noop; - - const messages = [ - { - id: 1, - sender_id: 100, - sender_full_name: "tony", - stream_id: 32, - stream: "denmark", - small_avatar_url: "http://zulip.spork", - }, - { - id: 2, - sender_id: 39, - sender_full_name: "jeff", - stream_id: 64, - stream: "russia", - small_avatar_url: "http://github.com", - }, - ]; - - list.append(messages, true); - - list.update_stream_name(64, "Finland"); - assert.equal(list.get(2).stream, "Finland"); - assert.equal(list.get(1).stream, "denmark"); -}); - run_test("nth_most_recent_id", () => { const list = new MessageList({}); list.append([{id: 10}, {id: 20}, {id: 30}]); diff --git a/frontend_tests/node_tests/message_store.js b/frontend_tests/node_tests/message_store.js index b3cf8f2dde..c97a107ce6 100644 --- a/frontend_tests/node_tests/message_store.js +++ b/frontend_tests/node_tests/message_store.js @@ -25,6 +25,18 @@ set_global("page_params", { is_admin: true, }); +const denmark = { + subscribed: false, + name: "Denmark", + stream_id: 20, +}; + +const devel = { + subscribed: true, + name: "Devel", + stream_id: 21, +}; + const me = { email: "me@example.com", user_id: 101, @@ -257,6 +269,9 @@ run_test("update_property", () => { sender_full_name: alice.full_name, sender_id: alice.user_id, small_avatar_url: "alice_url", + stream_id: devel.stream_id, + stream: devel.name, + display_recipient: devel.name, id: 100, }; const message2 = { @@ -264,6 +279,9 @@ run_test("update_property", () => { sender_full_name: bob.full_name, sender_id: bob.user_id, small_avatar_url: "bob_url", + stream_id: denmark.stream_id, + stream: denmark.name, + display_recipient: denmark.name, id: 101, }; for (const message of [message1, message2]) { @@ -282,6 +300,16 @@ run_test("update_property", () => { message_store.update_property("small_avatar_url", "bobby_url", {user_id: bob.user_id}); assert.equal(message1.small_avatar_url, "alice_url"); assert.equal(message2.small_avatar_url, "bobby_url"); + + assert.equal(message1.stream, devel.name); + assert.equal(message1.display_recipient, devel.name); + assert.equal(message2.stream, denmark.name); + assert.equal(message2.display_recipient, denmark.name); + message_store.update_property("stream_name", "Prod", {stream_id: devel.stream_id}); + assert.equal(message1.stream, "Prod"); + assert.equal(message1.display_recipient, "Prod"); + assert.equal(message2.stream, denmark.name); + assert.equal(message2.display_recipient, denmark.name); }); run_test("each", () => { diff --git a/static/js/message_list.js b/static/js/message_list.js index 7e31482e19..4ee287b3c7 100644 --- a/static/js/message_list.js +++ b/static/js/message_list.js @@ -393,13 +393,6 @@ class MessageList { return this.view.get_row(id); } - update_stream_name(stream_id, new_stream_name) { - this.data.update_stream_name(stream_id, new_stream_name); - if (this.table_name !== undefined) { - this.view.rerender_preserving_scrolltop(); - } - } - change_message_id(old_id, new_id) { const opts = { is_current_list: () => current_msg_list === this, diff --git a/static/js/message_list_data.js b/static/js/message_list_data.js index 32968ed029..fefac29b02 100644 --- a/static/js/message_list_data.js +++ b/static/js/message_list_data.js @@ -193,15 +193,6 @@ class MessageListData { return this.last().id; } - update_stream_name(stream_id, new_stream_name) { - for (const item of this._items) { - if (item.stream_id && item.stream_id === stream_id) { - item.display_recipient = new_stream_name; - item.stream = new_stream_name; - } - } - } - add_messages(messages) { let top_messages = []; let bottom_messages = []; diff --git a/static/js/message_live_update.js b/static/js/message_live_update.js index 6a1d59f066..c0b86ee61c 100644 --- a/static/js/message_live_update.js +++ b/static/js/message_live_update.js @@ -10,12 +10,8 @@ function rerender_messages_view() { } exports.update_stream_name = function (stream_id, new_name) { - for (const list of [home_msg_list, message_list.narrowed, message_list.all]) { - if (list === undefined) { - continue; - } - list.update_stream_name(stream_id, new_name); - } + message_store.update_property("stream_name", new_name, {stream_id}); + rerender_messages_view(); }; exports.update_user_full_name = function (user_id, full_name) { diff --git a/static/js/message_store.js b/static/js/message_store.js index 16403040e7..1e88d319f9 100644 --- a/static/js/message_store.js +++ b/static/js/message_store.js @@ -212,6 +212,14 @@ exports.update_property = function (property, value, info) { } }); break; + case "stream_name": + exports.each((msg) => { + if (msg.stream_id && msg.stream_id === info.stream_id) { + msg.display_recipient = value; + msg.stream = value; + } + }); + break; } };