mirror of https://github.com/zulip/zulip.git
Render just one message when editing and updating
(imported from commit 5b28e96e9d410faf9b33a5b0a1b4423191e8de58)
This commit is contained in:
parent
b4e4a98de6
commit
305cf30c50
|
@ -191,9 +191,9 @@ exports.edit_locally = function edit_locally(message, raw_content, new_topic) {
|
|||
message.content = exports.apply_markdown(raw_content);
|
||||
// We don't handle unread counts since local messages must be sent by us
|
||||
|
||||
home_msg_list.rerender();
|
||||
home_msg_list.view.rerender_message(message);
|
||||
if (current_msg_list === narrowed_msg_list) {
|
||||
narrowed_msg_list.rerender();
|
||||
narrowed_msg_list.view().rerender_message(message);
|
||||
}
|
||||
stream_list.update_streams_sidebar();
|
||||
};
|
||||
|
@ -219,6 +219,7 @@ exports.reify_message_id = function reify_message_id(local_id, server_id) {
|
|||
exports.process_from_server = function process_from_server(messages) {
|
||||
var updated = false;
|
||||
var locally_processed_ids = [];
|
||||
var msgs_to_rerender = [];
|
||||
messages = _.filter(messages, function (message) {
|
||||
// In case we get the sent message before we get the send ACK, reify here
|
||||
exports.reify_message_id(message.local_id, message.id);
|
||||
|
@ -246,6 +247,7 @@ exports.process_from_server = function process_from_server(messages) {
|
|||
updated = true;
|
||||
}
|
||||
}
|
||||
msgs_to_rerender.push(client_message);
|
||||
locally_processed_ids.push(client_message.id);
|
||||
compose.report_as_received(client_message);
|
||||
delete waiting_for_ack[client_message.id];
|
||||
|
@ -255,10 +257,9 @@ exports.process_from_server = function process_from_server(messages) {
|
|||
});
|
||||
|
||||
if (updated) {
|
||||
// TODO just rerender the message, not the whole list
|
||||
home_msg_list.rerender();
|
||||
home_msg_list.view.rerender_messages(msgs_to_rerender);
|
||||
if (current_msg_list === narrowed_msg_list) {
|
||||
narrowed_msg_list.rerender();
|
||||
narrowed_msg_list.view().rerender_messages(msgs_to_rerender);
|
||||
}
|
||||
} else {
|
||||
_.each(locally_processed_ids, function (id) {
|
||||
|
|
|
@ -583,6 +583,27 @@ MessageListView.prototype = {
|
|||
}
|
||||
},
|
||||
|
||||
rerender_message: function MessageListView__rerender_message(message) {
|
||||
var row = this.get_row(message.id);
|
||||
|
||||
if (row === undefined) {
|
||||
blueslip.error("Cannot rerender a message that's not in this list!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Re-render just this one message
|
||||
var rendered_msg = $(templates.render('single_message', message));
|
||||
this._rows[message.id] = rendered_msg;
|
||||
row.replaceWith(rendered_msg);
|
||||
},
|
||||
|
||||
rerender_messages: function MessageListView__rerender_messages(messages) {
|
||||
var self = this;
|
||||
_.each(messages, function (message) {
|
||||
self.rerender_message(message);
|
||||
});
|
||||
},
|
||||
|
||||
append: function MessageListView__append(messages, messages_are_new) {
|
||||
var cur_window_size = this._render_win_end - this._render_win_start;
|
||||
if (cur_window_size < this._RENDER_WINDOW_SIZE) {
|
||||
|
|
|
@ -214,11 +214,14 @@ function maybe_add_narrowed_messages(messages, msg_list, messages_are_new) {
|
|||
}
|
||||
|
||||
exports.update_messages = function update_messages(events) {
|
||||
var msgs_to_rerender = [];
|
||||
|
||||
_.each(events, function (event) {
|
||||
var msg = stored_messages[event.message_id];
|
||||
if (msg === undefined) {
|
||||
return;
|
||||
}
|
||||
msgs_to_rerender.push(msg);
|
||||
|
||||
msg.alerted = event.flags.indexOf("has_alert_word") !== -1;
|
||||
msg.mentioned = event.flags.indexOf("mentioned") !== -1 ||
|
||||
|
@ -268,9 +271,9 @@ exports.update_messages = function update_messages(events) {
|
|||
alert_words.process_message(msg);
|
||||
});
|
||||
|
||||
home_msg_list.rerender();
|
||||
home_msg_list.view.rerender_messages(msgs_to_rerender);
|
||||
if (current_msg_list === narrowed_msg_list) {
|
||||
narrowed_msg_list.rerender();
|
||||
narrowed_msg_list.view().rerender_messages(msgs_to_rerender);
|
||||
}
|
||||
unread.update_unread_counts();
|
||||
stream_list.update_streams_sidebar();
|
||||
|
|
Loading…
Reference in New Issue