message view: Move live update logic of stream name to message_store.

This commit is contained in:
Ryan Rehman
2020-07-27 03:09:32 +05:30
committed by Tim Abbott
parent 131a1dd54f
commit 15c5dadb73
6 changed files with 38 additions and 52 deletions

View File

@@ -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}]);

View File

@@ -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", () => {

View File

@@ -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,

View File

@@ -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 = [];

View File

@@ -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) {

View File

@@ -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;
}
};