mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	message view: Move live update logic of stream name to message_store.
				
					
				
			This commit is contained in:
		@@ -172,36 +172,6 @@ run_test("message_range", () => {
 | 
				
			|||||||
    assert.deepEqual(list.message_range(-1, 40), [{id: 30}, {id: 40}]);
 | 
					    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", () => {
 | 
					run_test("nth_most_recent_id", () => {
 | 
				
			||||||
    const list = new MessageList({});
 | 
					    const list = new MessageList({});
 | 
				
			||||||
    list.append([{id: 10}, {id: 20}, {id: 30}]);
 | 
					    list.append([{id: 10}, {id: 20}, {id: 30}]);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,6 +25,18 @@ set_global("page_params", {
 | 
				
			|||||||
    is_admin: true,
 | 
					    is_admin: true,
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const denmark = {
 | 
				
			||||||
 | 
					    subscribed: false,
 | 
				
			||||||
 | 
					    name: "Denmark",
 | 
				
			||||||
 | 
					    stream_id: 20,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const devel = {
 | 
				
			||||||
 | 
					    subscribed: true,
 | 
				
			||||||
 | 
					    name: "Devel",
 | 
				
			||||||
 | 
					    stream_id: 21,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const me = {
 | 
					const me = {
 | 
				
			||||||
    email: "me@example.com",
 | 
					    email: "me@example.com",
 | 
				
			||||||
    user_id: 101,
 | 
					    user_id: 101,
 | 
				
			||||||
@@ -257,6 +269,9 @@ run_test("update_property", () => {
 | 
				
			|||||||
        sender_full_name: alice.full_name,
 | 
					        sender_full_name: alice.full_name,
 | 
				
			||||||
        sender_id: alice.user_id,
 | 
					        sender_id: alice.user_id,
 | 
				
			||||||
        small_avatar_url: "alice_url",
 | 
					        small_avatar_url: "alice_url",
 | 
				
			||||||
 | 
					        stream_id: devel.stream_id,
 | 
				
			||||||
 | 
					        stream: devel.name,
 | 
				
			||||||
 | 
					        display_recipient: devel.name,
 | 
				
			||||||
        id: 100,
 | 
					        id: 100,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    const message2 = {
 | 
					    const message2 = {
 | 
				
			||||||
@@ -264,6 +279,9 @@ run_test("update_property", () => {
 | 
				
			|||||||
        sender_full_name: bob.full_name,
 | 
					        sender_full_name: bob.full_name,
 | 
				
			||||||
        sender_id: bob.user_id,
 | 
					        sender_id: bob.user_id,
 | 
				
			||||||
        small_avatar_url: "bob_url",
 | 
					        small_avatar_url: "bob_url",
 | 
				
			||||||
 | 
					        stream_id: denmark.stream_id,
 | 
				
			||||||
 | 
					        stream: denmark.name,
 | 
				
			||||||
 | 
					        display_recipient: denmark.name,
 | 
				
			||||||
        id: 101,
 | 
					        id: 101,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    for (const message of [message1, message2]) {
 | 
					    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});
 | 
					    message_store.update_property("small_avatar_url", "bobby_url", {user_id: bob.user_id});
 | 
				
			||||||
    assert.equal(message1.small_avatar_url, "alice_url");
 | 
					    assert.equal(message1.small_avatar_url, "alice_url");
 | 
				
			||||||
    assert.equal(message2.small_avatar_url, "bobby_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", () => {
 | 
					run_test("each", () => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -393,13 +393,6 @@ class MessageList {
 | 
				
			|||||||
        return this.view.get_row(id);
 | 
					        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) {
 | 
					    change_message_id(old_id, new_id) {
 | 
				
			||||||
        const opts = {
 | 
					        const opts = {
 | 
				
			||||||
            is_current_list: () => current_msg_list === this,
 | 
					            is_current_list: () => current_msg_list === this,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -193,15 +193,6 @@ class MessageListData {
 | 
				
			|||||||
        return this.last().id;
 | 
					        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) {
 | 
					    add_messages(messages) {
 | 
				
			||||||
        let top_messages = [];
 | 
					        let top_messages = [];
 | 
				
			||||||
        let bottom_messages = [];
 | 
					        let bottom_messages = [];
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,12 +10,8 @@ function rerender_messages_view() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.update_stream_name = function (stream_id, new_name) {
 | 
					exports.update_stream_name = function (stream_id, new_name) {
 | 
				
			||||||
    for (const list of [home_msg_list, message_list.narrowed, message_list.all]) {
 | 
					    message_store.update_property("stream_name", new_name, {stream_id});
 | 
				
			||||||
        if (list === undefined) {
 | 
					    rerender_messages_view();
 | 
				
			||||||
            continue;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        list.update_stream_name(stream_id, new_name);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exports.update_user_full_name = function (user_id, full_name) {
 | 
					exports.update_user_full_name = function (user_id, full_name) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -212,6 +212,14 @@ exports.update_property = function (property, value, info) {
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            break;
 | 
					            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;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user