Handle topic edits and rerender view if topics have changed

(imported from commit b59f6b532138d660e0acfb949b2eb223b5c5ed0e)
This commit is contained in:
Leo Franchi
2014-02-26 12:37:30 -05:00
committed by Jessica McKellar
parent 7658886b02
commit b51ea69db0
2 changed files with 23 additions and 5 deletions

View File

@@ -6,7 +6,14 @@ var currently_editing_messages = {};
//returns true if the edit task should end.
exports.save = function (row) {
var msg_list = current_msg_list;
var message = current_msg_list.get(rows.id(row));
var message_row;
if (row.hasClass('recipient_row')) {
message_row = rows.first_message_in_group(row);
} else {
message_row = row;
}
var message = current_msg_list.get(rows.id(message_row));
var changed = false;
var new_content = row.find(".message_edit_content").val();
@@ -155,7 +162,7 @@ exports.start_topic_edit = function (recipient_row) {
var form = $(templates.render('topic_edit_form'));
current_msg_list.show_edit_topic(recipient_row, form);
form.keydown(handle_edit_keydown);
var message = current_msg_list.get(rows.id(recipient_row));
var message = current_msg_list.get(rows.id(rows.first_message_in_group(recipient_row)));
var topic = message.subject;
if (topic === compose.empty_subject_placeholder()) {
topic = '';

View File

@@ -215,6 +215,7 @@ function maybe_add_narrowed_messages(messages, msg_list, messages_are_new) {
exports.update_messages = function update_messages(events) {
var msgs_to_rerender = [];
var topic_edited = false;
_.each(events, function (event) {
var msg = stored_messages[event.message_id];
@@ -237,6 +238,7 @@ exports.update_messages = function update_messages(events) {
// A topic edit may affect multiple messages, listed in
// event.message_ids. event.message_id is still the first message
// where the user initiated the edit.
topic_edited = true;
_.each(event.message_ids, function (id) {
var msg = message_store.get(id);
if (msg === undefined) {
@@ -271,9 +273,18 @@ exports.update_messages = function update_messages(events) {
alert_words.process_message(msg);
});
home_msg_list.view.rerender_messages(msgs_to_rerender);
if (current_msg_list === narrowed_msg_list) {
narrowed_msg_list.view.rerender_messages(msgs_to_rerender);
// If a topic was edited, we re-render the whole view to get any propagated edits
// to be updated
if (topic_edited) {
home_msg_list.rerender();
if (current_msg_list === narrowed_msg_list) {
narrowed_msg_list.rerender();
}
} else {
home_msg_list.view.rerender_messages(msgs_to_rerender);
if (current_msg_list === narrowed_msg_list) {
narrowed_msg_list.view.rerender_messages(msgs_to_rerender);
}
}
unread.update_unread_counts();
stream_list.update_streams_sidebar();