diff --git a/static/js/hotkey.js b/static/js/hotkey.js index f58e1c3740..108eeec8fc 100644 --- a/static/js/hotkey.js +++ b/static/js/hotkey.js @@ -261,6 +261,15 @@ function process_hotkey(e) { return true; } + if (current_msg_list.summary_is_selected()) { + switch (event_name) { + case 'enter': + ui.expand_summary_row(current_msg_list.selected_row()); + return true; + } + return false; + } + // Shortcuts that operate on a message switch (event_name) { case 'message_actions': diff --git a/static/js/message_list.js b/static/js/message_list.js index 0f334b99e6..55f9dd5c97 100644 --- a/static/js/message_list.js +++ b/static/js/message_list.js @@ -153,6 +153,10 @@ MessageList.prototype = { return rows.get(this._selected_id, this.table_name); }, + summary_is_selected: function () { + return this._is_summarized_message(this.selected_message()); + }, + closest_id: function MessageList_closest_id(id) { var items = this._items; diff --git a/static/js/ui.js b/static/js/ui.js index fdcc6ed493..86a9fabf4f 100644 --- a/static/js/ui.js +++ b/static/js/ui.js @@ -700,6 +700,33 @@ exports.collapse = function (row) { show_more_link(row); }; +exports.expand_summary_row = function (row) { + var message_ids = row.attr('data-messages').split(' '); + var messages = _.map(message_ids, function (id) { + return all_msg_list.get(id); + }); + + function remove_flag(flag) { + _.each(messages, function (msg){ + msg.flags = _.without(msg.flags, flag); + }); + update_message_flag(messages, flag, false); + } + + remove_flag('summarize_in_stream'); + if (!narrow.active()) { + remove_flag('summarize_in_home'); + } + + //TODO: Avoid a full re-render + home_msg_list.rerender(); + if (current_msg_list !== home_msg_list) { + current_msg_list.rerender(); + } + + current_msg_list.select_id(message_ids[0]); +}; + $(function () { // NB: This just binds to current elements, and won't bind to elements // created after ready() is called. @@ -952,30 +979,7 @@ $(function () { if (feature_flags.summarize_read_while_narrowed) { $("#main_div").on("click", ".summary_row", function (e) { - var target = $(e.target).closest('.summary_row'); - var message_ids = target.attr('data-messages').split(' '); - var messages = _.map(message_ids, function (id) { - return all_msg_list.get(id); - }); - - function remove_flag(flag) { - _.each(messages, function (msg){ - msg.flags = _.without(msg.flags, flag); - }); - update_message_flag(messages, flag, false); - } - - remove_flag('summarize_in_stream'); - if (!narrow.active()) { - remove_flag('summarize_in_home'); - } - - //TODO: Avoid a full re-render - home_msg_list.rerender(); - if (current_msg_list !== home_msg_list) { - current_msg_list.rerender(); - } - + exports.expand_summary_row($(e.target).closest('.summary_row')); e.stopImmediatePropagation(); }); }