message_list_view: Move edited position conditionals to JS.

This adds three bools to message_container object which calculate bools
where the "(EDITED)" label should appear:

* `edited_in_left_col` -- when label appears in left column.
* `edited_alongside_sender` -- when label appears alongside sender info.
* `edited_status_msg` -- when label appears for a "/me" message.

We use the new bools and remove the complicated if else statements
from the templates for the "(EDITED)" label.

This also allows us to add a unit test to verify the logic.
This commit is contained in:
Vaibhav
2019-03-16 00:12:24 +05:30
committed by Tim Abbott
parent 58874a08e3
commit 1f76374e32
4 changed files with 97 additions and 14 deletions

View File

@@ -201,9 +201,21 @@ MessageListView.prototype = {
},
_add_msg_edited_vars: function (message_container) {
// This adds variables to message_container object which calculate bools for
// checking position of "(EDITED)" label as well as the edited timestring
// The bools can be defined only when the message is edited
// (or when the `last_edit_timestr` is defined). The bools are:
// * `edited_in_left_col` -- when label appears in left column.
// * `edited_alongside_sender` -- when label appears alongside sender info.
// * `edited_status_msg` -- when label appears for a "/me" message.
var last_edit_timestr = this._get_msg_timestring(message_container);
var include_sender = message_container.include_sender;
var status_message = Boolean(message_container.status_message);
if (last_edit_timestr !== undefined) {
message_container.last_edit_timestr = last_edit_timestr;
message_container.edited_in_left_col = !include_sender;
message_container.edited_alongside_sender = include_sender && !status_message;
message_container.edited_status_msg = include_sender && status_message;
}
},
@@ -321,8 +333,6 @@ MessageListView.prototype = {
message_container.sender_is_bot = people.sender_is_bot(message_container.msg);
message_container.sender_is_guest = people.sender_is_guest(message_container.msg);
self._add_msg_edited_vars(message_container);
message_container.small_avatar_url = people.small_avatar_url(message_container.msg);
if (message_container.msg.stream) {
message_container.background_color =
@@ -331,6 +341,8 @@ MessageListView.prototype = {
message_container.contains_mention = message_container.msg.mentioned;
self._maybe_format_me_message(message_container);
// Once all other variables are updated
self._add_msg_edited_vars(message_container);
prev = message_container;
});
@@ -1153,8 +1165,8 @@ MessageListView.prototype = {
var was_selected = this.list.selected_message() === message_container.msg;
// Re-render just this one message
this._add_msg_edited_vars(message_container);
this._maybe_format_me_message(message_container);
this._add_msg_edited_vars(message_container);
// Make sure the right thing happens if the message was edited to mention us.
message_container.contains_mention = message_container.msg.mentioned;