diff --git a/static/js/message_edit.js b/static/js/message_edit.js index d7c1e3da79..316fd14017 100644 --- a/static/js/message_edit.js +++ b/static/js/message_edit.js @@ -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 = ''; diff --git a/static/js/message_store.js b/static/js/message_store.js index cf68415294..ac54c2fa7b 100644 --- a/static/js/message_store.js +++ b/static/js/message_store.js @@ -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();