mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
Rename message to message_container
Now that we are not directly using message in the message list view rename the uses of message that are message_containers. (imported from commit 5c355703a8934a74864f5de6ecb1e2fd851e5d41)
This commit is contained in:
@@ -229,7 +229,7 @@ exports.update_rendered_message_groups = function (message_groups, get_element)
|
|||||||
// the other code takes advantage of blocks beneath recipient bars.
|
// the other code takes advantage of blocks beneath recipient bars.
|
||||||
_.each(message_groups, function (message_group) {
|
_.each(message_groups, function (message_group) {
|
||||||
var elt = get_element(message_group);
|
var elt = get_element(message_group);
|
||||||
var first_message = message_group.messages[0];
|
var first_message = message_group.message_containers[0];
|
||||||
var should_fade = !fade_heuristic(focused_recipient, first_message);
|
var should_fade = !fade_heuristic(focused_recipient, first_message);
|
||||||
change_fade_state(elt, should_fade);
|
change_fade_state(elt, should_fade);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ function MessageListView(list, table_name, collapse_messages) {
|
|||||||
this.list = list;
|
this.list = list;
|
||||||
this.collapse_messages = collapse_messages;
|
this.collapse_messages = collapse_messages;
|
||||||
this._rows = {};
|
this._rows = {};
|
||||||
this._list_messages = {};
|
this.message_containers = {};
|
||||||
this.table_name = table_name;
|
this.table_name = table_name;
|
||||||
if (this.table_name) {
|
if (this.table_name) {
|
||||||
this.clear_table();
|
this.clear_table();
|
||||||
@@ -44,8 +44,8 @@ function same_recipient(a, b) {
|
|||||||
return util.same_recipient(a.msg, b.msg);
|
return util.same_recipient(a.msg, b.msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
function add_display_time(group, message, prev) {
|
function add_display_time(group, message_container, prev) {
|
||||||
var time = new XDate(message.msg.timestamp * 1000);
|
var time = new XDate(message_container.msg.timestamp * 1000);
|
||||||
|
|
||||||
if (prev !== undefined) {
|
if (prev !== undefined) {
|
||||||
var prev_time = new XDate(prev.msg.timestamp * 1000);
|
var prev_time = new XDate(prev.msg.timestamp * 1000);
|
||||||
@@ -57,31 +57,31 @@ function add_display_time(group, message, prev) {
|
|||||||
group.show_date = (timerender.render_date(time))[0].outerHTML;
|
group.show_date = (timerender.render_date(time))[0].outerHTML;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.timestr === undefined) {
|
if (message_container.timestr === undefined) {
|
||||||
message.timestr = stringify_time(time);
|
message_container.timestr = stringify_time(time);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function populate_group_from_message(group, message) {
|
function populate_group_from_message_container(group, message_container) {
|
||||||
group.is_stream = message.msg.is_stream;
|
group.is_stream = message_container.msg.is_stream;
|
||||||
group.is_private = message.msg.is_private;
|
group.is_private = message_container.msg.is_private;
|
||||||
|
|
||||||
if (group.is_stream) {
|
if (group.is_stream) {
|
||||||
group.background_color = stream_data.get_color(message.msg.stream);
|
group.background_color = stream_data.get_color(message_container.msg.stream);
|
||||||
group.color_class = stream_color.get_color_class(group.background_color);
|
group.color_class = stream_color.get_color_class(group.background_color);
|
||||||
group.invite_only = stream_data.get_invite_only(message.msg.stream);
|
group.invite_only = stream_data.get_invite_only(message_container.msg.stream);
|
||||||
group.subject = message.msg.subject;
|
group.subject = message_container.msg.subject;
|
||||||
group.match_subject = message.match_subject;
|
group.match_subject = message_container.match_subject;
|
||||||
group.stream_url = message.stream_url;
|
group.stream_url = message_container.stream_url;
|
||||||
group.topic_url = message.topic_url;
|
group.topic_url = message_container.topic_url;
|
||||||
} else if (group.is_private) {
|
} else if (group.is_private) {
|
||||||
group.pm_with_url = message.pm_with_url;
|
group.pm_with_url = message_container.pm_with_url;
|
||||||
group.display_reply_to = message.msg.display_reply_to;
|
group.display_reply_to = message_container.msg.display_reply_to;
|
||||||
}
|
}
|
||||||
group.display_recipient = message.msg.display_recipient;
|
group.display_recipient = message_container.msg.display_recipient;
|
||||||
group.always_visible_topic_edit = message.msg.always_visible_topic_edit;
|
group.always_visible_topic_edit = message_container.msg.always_visible_topic_edit;
|
||||||
group.on_hover_topic_edit = message.msg.on_hover_topic_edit;
|
group.on_hover_topic_edit = message_container.msg.on_hover_topic_edit;
|
||||||
group.subject_links = message.msg.subject_links;
|
group.subject_links = message_container.msg.subject_links;
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageListView.prototype = {
|
MessageListView.prototype = {
|
||||||
@@ -91,34 +91,34 @@ MessageListView.prototype = {
|
|||||||
// trigger a re-render
|
// trigger a re-render
|
||||||
_RENDER_THRESHOLD: 50,
|
_RENDER_THRESHOLD: 50,
|
||||||
|
|
||||||
_add_msg_timestring: function MessageListView___add_msg_timestring(message) {
|
_add_msg_timestring: function MessageListView___add_msg_timestring(message_container) {
|
||||||
if (message.msg.last_edit_timestamp !== undefined) {
|
if (message_container.msg.last_edit_timestamp !== undefined) {
|
||||||
// Add or update the last_edit_timestr
|
// Add or update the last_edit_timestr
|
||||||
var last_edit_time = new XDate(message.msg.last_edit_timestamp * 1000);
|
var last_edit_time = new XDate(message_container.msg.last_edit_timestamp * 1000);
|
||||||
message.last_edit_timestr =
|
message_container.last_edit_timestr =
|
||||||
(timerender.render_date(last_edit_time))[0].innerText
|
(timerender.render_date(last_edit_time))[0].innerText
|
||||||
+ " at " + stringify_time(last_edit_time);
|
+ " at " + stringify_time(last_edit_time);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
add_subscription_marker: function MessageListView__add_subscription_marker(group, last_msg, first_msg) {
|
add_subscription_marker: function MessageListView__add_subscription_marker(group, last_msg_container, first_msg_container) {
|
||||||
if (last_msg !== undefined &&
|
if (last_msg_container !== undefined &&
|
||||||
first_msg.msg.historical !== last_msg.msg.historical) {
|
first_msg_container.msg.historical !== last_msg_container.msg.historical) {
|
||||||
group.bookend_top = true;
|
group.bookend_top = true;
|
||||||
if (first_msg.msg.historical) {
|
if (first_msg_container.msg.historical) {
|
||||||
group.unsubscribed = first_msg.msg.stream;
|
group.unsubscribed = first_msg_container.msg.stream;
|
||||||
group.bookend_content = this.list.unsubscribed_bookend_content(first_msg.msg.stream);
|
group.bookend_content = this.list.unsubscribed_bookend_content(first_msg_container.msg.stream);
|
||||||
} else {
|
} else {
|
||||||
group.subscribed = first_msg.msg.stream;
|
group.subscribed = first_msg_container.msg.stream;
|
||||||
group.bookend_content = this.list.subscribed_bookend_content(first_msg.msg.stream);
|
group.bookend_content = this.list.subscribed_bookend_content(first_msg_container.msg.stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
build_message_groups: function MessageListView__build_message_groups(messages, message_id_prefix) {
|
build_message_groups: function MessageListView__build_message_groups(message_containers, message_id_prefix) {
|
||||||
function start_group() {
|
function start_group() {
|
||||||
return {
|
return {
|
||||||
messages: [],
|
message_containers: [],
|
||||||
message_group_id: _.uniqueId('message_group_')
|
message_group_id: _.uniqueId('message_group_')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -128,82 +128,82 @@ MessageListView.prototype = {
|
|||||||
var new_message_groups = [];
|
var new_message_groups = [];
|
||||||
var prev;
|
var prev;
|
||||||
|
|
||||||
function add_message_to_group(message) {
|
function add_message_container_to_group(message_container) {
|
||||||
if (same_sender(prev, message)) {
|
if (same_sender(prev, message_container)) {
|
||||||
prev.next_is_same_sender = true;
|
prev.next_is_same_sender = true;
|
||||||
}
|
}
|
||||||
current_group.messages.push(message);
|
current_group.message_containers.push(message_container);
|
||||||
}
|
}
|
||||||
|
|
||||||
function finish_group() {
|
function finish_group() {
|
||||||
if (current_group.messages.length > 0) {
|
if (current_group.message_containers.length > 0) {
|
||||||
populate_group_from_message(current_group, current_group.messages[0]);
|
populate_group_from_message_container(current_group, current_group.message_containers[0]);
|
||||||
current_group.messages[current_group.messages.length - 1].include_footer = true;
|
current_group.message_containers[current_group.message_containers.length - 1].include_footer = true;
|
||||||
new_message_groups.push(current_group);
|
new_message_groups.push(current_group);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_.each(messages, function (message) {
|
_.each(message_containers, function (message_container) {
|
||||||
message.include_recipient = false;
|
message_container.include_recipient = false;
|
||||||
message.include_footer = false;
|
message_container.include_footer = false;
|
||||||
|
|
||||||
if (same_recipient(prev, message) && self.collapse_messages &&
|
if (same_recipient(prev, message_container) && self.collapse_messages &&
|
||||||
prev.msg.historical === message.msg.historical && same_day(prev, message)) {
|
prev.msg.historical === message_container.msg.historical && same_day(prev, message_container)) {
|
||||||
add_message_to_group(message);
|
add_message_container_to_group(message_container);
|
||||||
} else {
|
} else {
|
||||||
finish_group();
|
finish_group();
|
||||||
current_group = start_group();
|
current_group = start_group();
|
||||||
add_message_to_group(message);
|
add_message_container_to_group(message_container);
|
||||||
|
|
||||||
message.include_recipient = true;
|
message_container.include_recipient = true;
|
||||||
message.subscribed = false;
|
message_container.subscribed = false;
|
||||||
message.unsubscribed = false;
|
message_container.unsubscribed = false;
|
||||||
|
|
||||||
// This home_msg_list condition can be removed
|
// This home_msg_list condition can be removed
|
||||||
// once we filter historical messages from the
|
// once we filter historical messages from the
|
||||||
// home view on the server side (which requires
|
// home view on the server side (which requires
|
||||||
// having an index on UserMessage.flags)
|
// having an index on UserMessage.flags)
|
||||||
if (self.list !== home_msg_list) {
|
if (self.list !== home_msg_list) {
|
||||||
self.add_subscription_marker(current_group, prev, message);
|
self.add_subscription_marker(current_group, prev, message_container);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.msg.stream) {
|
if (message_container.msg.stream) {
|
||||||
message.stream_url = narrow.by_stream_uri(message.msg.stream);
|
message_container.stream_url = narrow.by_stream_uri(message_container.msg.stream);
|
||||||
message.topic_url = narrow.by_stream_subject_uri(message.msg.stream, message.msg.subject);
|
message_container.topic_url = narrow.by_stream_subject_uri(message_container.msg.stream, message_container.msg.subject);
|
||||||
} else {
|
} else {
|
||||||
message.pm_with_url = narrow.pm_with_uri(message.msg.reply_to);
|
message_container.pm_with_url = narrow.pm_with_uri(message_container.msg.reply_to);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
add_display_time(current_group, message, prev);
|
add_display_time(current_group, message_container, prev);
|
||||||
|
|
||||||
message.include_sender = true;
|
message_container.include_sender = true;
|
||||||
if (!message.include_recipient &&
|
if (!message_container.include_recipient &&
|
||||||
!prev.status_message &&
|
!prev.status_message &&
|
||||||
same_sender(prev, message)) {
|
same_sender(prev, message_container)) {
|
||||||
message.include_sender = false;
|
message_container.include_sender = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
self._add_msg_timestring(message);
|
self._add_msg_timestring(message_container);
|
||||||
|
|
||||||
message.small_avatar_url = ui.small_avatar_url(message.msg);
|
message_container.small_avatar_url = ui.small_avatar_url(message_container.msg);
|
||||||
if (message.msg.stream !== undefined) {
|
if (message_container.msg.stream !== undefined) {
|
||||||
message.background_color = stream_data.get_color(message.msg.stream);
|
message_container.background_color = stream_data.get_color(message_container.msg.stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
message.contains_mention = notifications.speaking_at_me(message.msg);
|
message_container.contains_mention = notifications.speaking_at_me(message_container.msg);
|
||||||
message.unread = unread.message_unread(message.msg);
|
message_container.unread = unread.message_unread(message_container.msg);
|
||||||
|
|
||||||
if (message.msg.is_me_message) {
|
if (message_container.msg.is_me_message) {
|
||||||
// Slice the '<p>/me ' off the front, and '</p>' off the end
|
// Slice the '<p>/me ' off the front, and '</p>' off the end
|
||||||
message.status_message = message.msg.content.slice(4 + 3, -4);
|
message_container.status_message = message_container.msg.content.slice(4 + 3, -4);
|
||||||
message.include_sender = true;
|
message_container.include_sender = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
message.status_message = false;
|
message_container.status_message = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
prev = message;
|
prev = message_container;
|
||||||
});
|
});
|
||||||
|
|
||||||
finish_group();
|
finish_group();
|
||||||
@@ -220,23 +220,23 @@ MessageListView.prototype = {
|
|||||||
if (first_group === undefined || second_group === undefined) {
|
if (first_group === undefined || second_group === undefined) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
var last_msg = _.last(first_group.messages);
|
var last_msg_container = _.last(first_group.message_containers);
|
||||||
var first_msg = _.first(second_group.messages);
|
var first_msg_container = _.first(second_group.message_containers);
|
||||||
|
|
||||||
// Join two groups into one.
|
// Join two groups into one.
|
||||||
if (this.collapse_messages && same_recipient(last_msg, first_msg) && same_day(last_msg, first_msg) && (last_msg.msg.historical === first_msg.msg.historical)) {
|
if (this.collapse_messages && same_recipient(last_msg_container, first_msg_container) && same_day(last_msg_container, first_msg_container) && (last_msg_container.msg.historical === first_msg_container.msg.historical)) {
|
||||||
if (!last_msg.status_message && !first_msg.is_me_message && same_sender(last_msg, first_msg)) {
|
if (!last_msg_container.status_message && !first_msg_container.is_me_message && same_sender(last_msg_container, first_msg_container)) {
|
||||||
first_msg.include_sender = false;
|
first_msg_container.include_sender = false;
|
||||||
}
|
}
|
||||||
if (same_sender(last_msg, first_msg)) {
|
if (same_sender(last_msg_container, first_msg_container)) {
|
||||||
last_msg.next_is_same_sender = true;
|
last_msg_container.next_is_same_sender = true;
|
||||||
}
|
}
|
||||||
first_group.messages = first_group.messages.concat(second_group.messages);
|
first_group.message_containers = first_group.message_containers.concat(second_group.message_containers);
|
||||||
return true;
|
return true;
|
||||||
// Add a subscription marker
|
// Add a subscription marker
|
||||||
} else if (this.list !== home_msg_list && last_msg.msg.historical !== first_msg.msg.historical) {
|
} else if (this.list !== home_msg_list && last_msg_container.msg.historical !== first_msg_container.msg.historical) {
|
||||||
first_group.bookend_bottom = true;
|
first_group.bookend_bottom = true;
|
||||||
this.add_subscription_marker(first_group, last_msg, first_msg);
|
this.add_subscription_marker(first_group, last_msg_container, first_msg_container);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
@@ -288,14 +288,14 @@ MessageListView.prototype = {
|
|||||||
if (this.join_message_groups(first_group, second_group)) {
|
if (this.join_message_groups(first_group, second_group)) {
|
||||||
// rerender the last message
|
// rerender the last message
|
||||||
message_actions.rerender_messages.push(
|
message_actions.rerender_messages.push(
|
||||||
first_group.messages[first_group.messages.length - second_group.messages.length - 1]
|
first_group.message_containers[first_group.message_containers.length - second_group.message_containers.length - 1]
|
||||||
);
|
);
|
||||||
message_actions.append_messages = _.first(new_message_groups).messages;
|
message_actions.append_messages = _.first(new_message_groups).message_containers;
|
||||||
new_message_groups = _.rest(new_message_groups);
|
new_message_groups = _.rest(new_message_groups);
|
||||||
} else if (first_group !== undefined && second_group !== undefined) {
|
} else if (first_group !== undefined && second_group !== undefined) {
|
||||||
var last_msg = _.last(first_group.messages);
|
var last_msg_container = _.last(first_group.message_containers);
|
||||||
var first_msg = _.first(second_group.messages);
|
var first_msg_container = _.first(second_group.message_containers);
|
||||||
if (same_day(last_msg, first_msg)) {
|
if (same_day(last_msg_container, first_msg_container)) {
|
||||||
// Clear the date if it is the same as the last group
|
// Clear the date if it is the same as the last group
|
||||||
second_group.show_date = undefined;
|
second_group.show_date = undefined;
|
||||||
}
|
}
|
||||||
@@ -307,22 +307,22 @@ MessageListView.prototype = {
|
|||||||
return message_actions;
|
return message_actions;
|
||||||
},
|
},
|
||||||
|
|
||||||
_post_process_messages: function MessageListView___post_process_messages(messages) {
|
_post_process_dom_messages: function MessageListView___post_process_dom_messages(dom_messages) {
|
||||||
// _post_process_messages adds applies some extra formating to messages
|
// _post_process_dom_messages adds applies some extra formating to messages
|
||||||
// and stores them in self._rows and sends an event that the message is
|
// and stores them in self._rows and sends an event that the message is
|
||||||
// complete. _post_process_messages should be a list of DOM nodes not
|
// complete. _post_process_dom_messages should be a list of DOM nodes not
|
||||||
// jQuery objects.
|
// jQuery objects.
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
_.each(messages, function (message_row) {
|
_.each(dom_messages, function (dom_message) {
|
||||||
if (!_.isElement(message_row)) {
|
if (!_.isElement(dom_message)) {
|
||||||
blueslip.error('Only DOM nodes can be passed to _post_process_messages');
|
blueslip.warn('Only DOM nodes can be passed to _post_process_messages');
|
||||||
}
|
}
|
||||||
var row = $(message_row);
|
var row = $(dom_message);
|
||||||
|
|
||||||
// Save DOM elements by id into self._rows for O(1) lookup
|
// Save DOM elements by id into self._rows for O(1) lookup
|
||||||
if (row.hasClass('message_row')) {
|
if (row.hasClass('message_row')) {
|
||||||
self._rows[row.attr('zid')] = message_row;
|
self._rows[row.attr('zid')] = dom_message;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (row.hasClass('mention')) {
|
if (row.hasClass('mention')) {
|
||||||
@@ -362,7 +362,7 @@ MessageListView.prototype = {
|
|||||||
// we we record if last_message_was_selected before updating the table
|
// we we record if last_message_was_selected before updating the table
|
||||||
var last_message_was_selected = rows.id(rows.last_visible()) === list.selected_id();
|
var last_message_was_selected = rows.id(rows.last_visible()) === list.selected_id();
|
||||||
var orig_scrolltop_offset, last_message_id;
|
var orig_scrolltop_offset, last_message_id;
|
||||||
var combined_messages, first_msg, last_msg;
|
var message_containers, first_msg, last_msg;
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
@@ -370,7 +370,7 @@ MessageListView.prototype = {
|
|||||||
// all messages lists. To prevent having both list views overwriting
|
// all messages lists. To prevent having both list views overwriting
|
||||||
// each others data we will make a new message object to add data to
|
// each others data we will make a new message object to add data to
|
||||||
// for rendering.
|
// for rendering.
|
||||||
messages = _.map(messages, function (message) { return {msg: message}; });
|
message_containers = _.map(messages, function (message) { return {msg: message}; });
|
||||||
|
|
||||||
function save_scroll_position() {
|
function save_scroll_position() {
|
||||||
if (orig_scrolltop_offset === undefined && self.selected_row().length > 0) {
|
if (orig_scrolltop_offset === undefined && self.selected_row().length > 0) {
|
||||||
@@ -388,16 +388,18 @@ MessageListView.prototype = {
|
|||||||
// This function processes messages into chunks with separators between them,
|
// This function processes messages into chunks with separators between them,
|
||||||
// and templates them to be inserted as table rows into the DOM.
|
// and templates them to be inserted as table rows into the DOM.
|
||||||
|
|
||||||
if (messages.length === 0 || this.table_name === undefined) {
|
if (message_containers.length === 0 || this.table_name === undefined) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var new_message_groups = this.build_message_groups(messages, this.table_name);
|
var new_message_groups = this.build_message_groups(message_containers, this.table_name);
|
||||||
var message_actions = this.merge_message_groups(new_message_groups, where);
|
var message_actions = this.merge_message_groups(new_message_groups, where);
|
||||||
var new_dom_elements = [];
|
var new_dom_elements = [];
|
||||||
var rendered_groups, dom_messages, last_message_row, last_group_row;
|
var rendered_groups, dom_messages, last_message_row, last_group_row;
|
||||||
|
|
||||||
_.each(messages, function (message) { self._list_messages[message.msg.id] = message; });
|
_.each(message_containers, function (message_container) {
|
||||||
|
self.message_containers[message_container.msg.id] = message_container;
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// Rerender message groups
|
// Rerender message groups
|
||||||
@@ -418,7 +420,7 @@ MessageListView.prototype = {
|
|||||||
dom_messages = rendered_groups.find('.message_row');
|
dom_messages = rendered_groups.find('.message_row');
|
||||||
// Not adding to new_dom_elements it is only used for autoscroll
|
// Not adding to new_dom_elements it is only used for autoscroll
|
||||||
|
|
||||||
self._post_process_messages(dom_messages.get());
|
self._post_process_dom_messages(dom_messages.get());
|
||||||
old_message_group.replaceWith(rendered_groups);
|
old_message_group.replaceWith(rendered_groups);
|
||||||
condense.condense_and_collapse(dom_messages);
|
condense.condense_and_collapse(dom_messages);
|
||||||
});
|
});
|
||||||
@@ -437,7 +439,7 @@ MessageListView.prototype = {
|
|||||||
dom_messages = rendered_groups.find('.message_row');
|
dom_messages = rendered_groups.find('.message_row');
|
||||||
new_dom_elements = new_dom_elements.concat(rendered_groups);
|
new_dom_elements = new_dom_elements.concat(rendered_groups);
|
||||||
|
|
||||||
self._post_process_messages(dom_messages.get());
|
self._post_process_dom_messages(dom_messages.get());
|
||||||
|
|
||||||
// The date row will be included in the message groups
|
// The date row will be included in the message groups
|
||||||
table.find('.recipient_row').first().prev('.date_row').remove();
|
table.find('.recipient_row').first().prev('.date_row').remove();
|
||||||
@@ -447,11 +449,11 @@ MessageListView.prototype = {
|
|||||||
|
|
||||||
// Rerender message rows
|
// Rerender message rows
|
||||||
if (message_actions.rerender_messages.length > 0) {
|
if (message_actions.rerender_messages.length > 0) {
|
||||||
_.each(message_actions.rerender_messages, function (message) {
|
_.each(message_actions.rerender_messages, function (message_container) {
|
||||||
var old_row = self.get_row(message.msg.id);
|
var old_row = self.get_row(message_container.msg.id);
|
||||||
var msg_to_render = _.extend(message, {table_name: this.table_name});
|
var msg_to_render = _.extend(message_container, {table_name: this.table_name});
|
||||||
var row = $(templates.render('single_message', msg_to_render));
|
var row = $(templates.render('single_message', msg_to_render));
|
||||||
self._post_process_messages(row.get());
|
self._post_process_dom_messages(row.get());
|
||||||
old_row.replaceWith(row);
|
old_row.replaceWith(row);
|
||||||
condense.condense_and_collapse(row);
|
condense.condense_and_collapse(row);
|
||||||
list.reselect_selected_id();
|
list.reselect_selected_id();
|
||||||
@@ -462,12 +464,12 @@ MessageListView.prototype = {
|
|||||||
if (message_actions.append_messages.length > 0) {
|
if (message_actions.append_messages.length > 0) {
|
||||||
last_message_row = table.find('.message_row:last').expectOne();
|
last_message_row = table.find('.message_row:last').expectOne();
|
||||||
last_group_row = rows.get_message_recipient_row(last_message_row);
|
last_group_row = rows.get_message_recipient_row(last_message_row);
|
||||||
dom_messages = $(_.map(message_actions.append_messages, function (message) {
|
dom_messages = $(_.map(message_actions.append_messages, function (message_container) {
|
||||||
var msg_to_render = _.extend(message, {table_name: this.table_name});
|
var msg_to_render = _.extend(message_container, {table_name: this.table_name});
|
||||||
return templates.render('single_message', msg_to_render);
|
return templates.render('single_message', msg_to_render);
|
||||||
}).join('')).filter('.message_row');
|
}).join('')).filter('.message_row');
|
||||||
|
|
||||||
self._post_process_messages(dom_messages.get());
|
self._post_process_dom_messages(dom_messages.get());
|
||||||
last_group_row.append(dom_messages);
|
last_group_row.append(dom_messages);
|
||||||
|
|
||||||
new_dom_elements = new_dom_elements.concat(dom_messages);
|
new_dom_elements = new_dom_elements.concat(dom_messages);
|
||||||
@@ -487,7 +489,7 @@ MessageListView.prototype = {
|
|||||||
dom_messages = rendered_groups.find('.message_row');
|
dom_messages = rendered_groups.find('.message_row');
|
||||||
new_dom_elements = new_dom_elements.concat(rendered_groups);
|
new_dom_elements = new_dom_elements.concat(rendered_groups);
|
||||||
|
|
||||||
self._post_process_messages(dom_messages.get());
|
self._post_process_dom_messages(dom_messages.get());
|
||||||
table.append(rendered_groups);
|
table.append(rendered_groups);
|
||||||
condense.condense_and_collapse(dom_messages);
|
condense.condense_and_collapse(dom_messages);
|
||||||
}
|
}
|
||||||
@@ -496,7 +498,7 @@ MessageListView.prototype = {
|
|||||||
|
|
||||||
var last_message_group = _.last(self._message_groups);
|
var last_message_group = _.last(self._message_groups);
|
||||||
if (last_message_group !== undefined) {
|
if (last_message_group !== undefined) {
|
||||||
list.last_message_historical = _.last(last_message_group.messages).msg.historical;
|
list.last_message_historical = _.last(last_message_group.message_containers).msg.historical;
|
||||||
}
|
}
|
||||||
list.update_trailing_bookend();
|
list.update_trailing_bookend();
|
||||||
|
|
||||||
@@ -508,7 +510,7 @@ MessageListView.prototype = {
|
|||||||
// of rows.js from compose_fade. We provide a callback function to be lazy--
|
// of rows.js from compose_fade. We provide a callback function to be lazy--
|
||||||
// compose_fade may not actually need the elements depending on its internal
|
// compose_fade may not actually need the elements depending on its internal
|
||||||
// state.
|
// state.
|
||||||
var message_row = self.get_row(message_group.messages[0].msg.id);
|
var message_row = self.get_row(message_group.message_containers[0].msg.id);
|
||||||
return rows.get_message_recipient_row(message_row);
|
return rows.get_message_recipient_row(message_row);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -699,14 +701,14 @@ MessageListView.prototype = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_rerender_header: function MessageListView__maybe_rerender_header(messages) {
|
_rerender_header: function MessageListView__maybe_rerender_header(message_containers) {
|
||||||
// Given a list of messages that are in the **same** message group,
|
// Given a list of messages that are in the **same** message group,
|
||||||
// rerender the header / recipient bar of the messages
|
// rerender the header / recipient bar of the messages
|
||||||
if (messages.length === 0) {
|
if (message_containers.length === 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var first_row = this.get_row(messages[0].msg.id);
|
var first_row = this.get_row(message_containers[0].msg.id);
|
||||||
|
|
||||||
// We may not have the row if the stream or topic was muted
|
// We may not have the row if the stream or topic was muted
|
||||||
if (first_row.length === 0) {
|
if (first_row.length === 0) {
|
||||||
@@ -716,17 +718,17 @@ MessageListView.prototype = {
|
|||||||
var recipient_row = rows.get_message_recipient_row(first_row);
|
var recipient_row = rows.get_message_recipient_row(first_row);
|
||||||
var header = recipient_row.find('.message_header');
|
var header = recipient_row.find('.message_header');
|
||||||
|
|
||||||
var group = {messages: messages};
|
var group = {message_containers: message_containers};
|
||||||
populate_group_from_message(group, messages[0]);
|
populate_group_from_message_container(group, message_containers[0]);
|
||||||
|
|
||||||
var rendered_recipient_row = $(templates.render('recipient_row', group));
|
var rendered_recipient_row = $(templates.render('recipient_row', group));
|
||||||
|
|
||||||
header.replaceWith(rendered_recipient_row);
|
header.replaceWith(rendered_recipient_row);
|
||||||
},
|
},
|
||||||
|
|
||||||
_rerender_message: function MessageListView___rerender_message(message) {
|
_rerender_message: function MessageListView___rerender_message(message_container) {
|
||||||
var row = this.get_row(message.msg.id);
|
var row = this.get_row(message_container.msg.id);
|
||||||
var was_selected = this.list.selected_message() === message;
|
var was_selected = this.list.selected_message() === message_container.msg;
|
||||||
|
|
||||||
// We may not have the row if the stream or topic was muted
|
// We may not have the row if the stream or topic was muted
|
||||||
if (row.length === 0) {
|
if (row.length === 0) {
|
||||||
@@ -734,15 +736,15 @@ MessageListView.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Re-render just this one message
|
// Re-render just this one message
|
||||||
this._add_msg_timestring(message);
|
this._add_msg_timestring(message_container);
|
||||||
|
|
||||||
var msg_to_render = _.extend(message, {table_name: this.table_name});
|
var msg_to_render = _.extend(message_container, {table_name: this.table_name});
|
||||||
var rendered_msg = $(templates.render('single_message', msg_to_render));
|
var rendered_msg = $(templates.render('single_message', msg_to_render));
|
||||||
this._post_process_messages(rendered_msg.get());
|
this._post_process_dom_messages(rendered_msg.get());
|
||||||
row.replaceWith(rendered_msg);
|
row.replaceWith(rendered_msg);
|
||||||
|
|
||||||
if (was_selected) {
|
if (was_selected) {
|
||||||
this.list.select_id(message.msg.id);
|
this.list.select_id(message_container.msg.id);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -757,20 +759,20 @@ MessageListView.prototype = {
|
|||||||
return message === undefined;
|
return message === undefined;
|
||||||
});
|
});
|
||||||
// Convert messages to list messages
|
// Convert messages to list messages
|
||||||
own_messages = _.map(messages, function (message) {
|
var message_containers = _.map(messages, function (message) {
|
||||||
return self._list_messages[message.id];
|
return self.message_containers[message.id];
|
||||||
});
|
});
|
||||||
|
|
||||||
var message_groups = [];
|
var message_groups = [];
|
||||||
var current_group = [];
|
var current_group = [];
|
||||||
_.each(own_messages, function (message) {
|
_.each(message_containers, function (message_container) {
|
||||||
if (current_group.length === 0 || same_recipient(current_group[current_group.length - 1], message)) {
|
if (current_group.length === 0 || same_recipient(current_group[current_group.length - 1], message_container)) {
|
||||||
current_group.push(message);
|
current_group.push(message_container);
|
||||||
} else {
|
} else {
|
||||||
message_groups.push(current_group);
|
message_groups.push(current_group);
|
||||||
current_group = [];
|
current_group = [];
|
||||||
}
|
}
|
||||||
self._rerender_message(message);
|
self._rerender_message(message_container);
|
||||||
});
|
});
|
||||||
if (current_group.length !== 0) {
|
if (current_group.length !== 0) {
|
||||||
message_groups.push(current_group);
|
message_groups.push(current_group);
|
||||||
@@ -827,7 +829,7 @@ MessageListView.prototype = {
|
|||||||
rows.get_table(this.table_name).children().detach();
|
rows.get_table(this.table_name).children().detach();
|
||||||
this._rows = {};
|
this._rows = {};
|
||||||
this._message_groups = [];
|
this._message_groups = [];
|
||||||
this._list_messages = {};
|
this.message_containers = {};
|
||||||
},
|
},
|
||||||
|
|
||||||
get_row: function MessageListView_get_row(id) {
|
get_row: function MessageListView_get_row(id) {
|
||||||
@@ -866,10 +868,10 @@ MessageListView.prototype = {
|
|||||||
this._rows[new_id] = row;
|
this._rows[new_id] = row;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._list_messages[old_id] !== undefined) {
|
if (this.message_containers[old_id] !== undefined) {
|
||||||
var message = this._list_messages[old_id];
|
var message_container = this.message_containers[old_id];
|
||||||
delete this._list_messages[old_id];
|
delete this.message_containers[old_id];
|
||||||
this._list_messages[new_id] = message;
|
this.message_containers[new_id] = message_container;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<div class="recipient_row" id="{{message_group_id}}">
|
<div class="recipient_row" id="{{message_group_id}}">
|
||||||
{{partial "recipient_row" "use_match_properties" ../../use_match_properties}}
|
{{partial "recipient_row" "use_match_properties" ../../use_match_properties}}
|
||||||
{{#each messages}}
|
{{#each message_containers}}
|
||||||
{{#with this}}
|
{{#with this}}
|
||||||
{{partial "single_message" "use_match_properties" ../../../../use_match_properties "table_name" ../../../../table_name}}
|
{{partial "single_message" "use_match_properties" ../../../../use_match_properties "table_name" ../../../../table_name}}
|
||||||
{{/with}}
|
{{/with}}
|
||||||
|
|||||||
@@ -17,27 +17,31 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
// MessageListView has lots of DOM code, so we are going to test the mesage
|
// MessageListView has lots of DOM code, so we are going to test the mesage
|
||||||
// group mearging logic on its own.
|
// group mearging logic on its own.
|
||||||
|
|
||||||
function build_message(message) {
|
function build_message_context(message, message_context) {
|
||||||
|
if (message_context === undefined) {
|
||||||
|
message_context = {};
|
||||||
|
}
|
||||||
if (message === undefined) {
|
if (message === undefined) {
|
||||||
message = {};
|
message = {};
|
||||||
}
|
}
|
||||||
return {
|
message_context = _.defaults(message_context, {
|
||||||
msg: _.defaults(message, {
|
include_sender: true
|
||||||
id: _.uniqueId('test_message_'),
|
});
|
||||||
status_message: false,
|
message_context.msg = _.defaults(message, {
|
||||||
type: 'stream',
|
id: _.uniqueId('test_message_'),
|
||||||
stream: 'Test Stream 1',
|
status_message: false,
|
||||||
subject: 'Test Subject 1',
|
type: 'stream',
|
||||||
sender_email: 'test@example.com',
|
stream: 'Test Stream 1',
|
||||||
timestamp: _.uniqueId(),
|
subject: 'Test Subject 1',
|
||||||
include_sender: true
|
sender_email: 'test@example.com',
|
||||||
})
|
timestamp: _.uniqueId()
|
||||||
};
|
});
|
||||||
|
return message_context;
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_message_group(messages) {
|
function build_message_group(messages) {
|
||||||
return {
|
return {
|
||||||
messages: messages,
|
message_containers: messages,
|
||||||
message_group_id: _.uniqueId('test_message_group_'),
|
message_group_id: _.uniqueId('test_message_group_'),
|
||||||
show_date: true
|
show_date: true
|
||||||
};
|
};
|
||||||
@@ -76,7 +80,7 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
(function test_empty_list_bottom() {
|
(function test_empty_list_bottom() {
|
||||||
var list = build_list([]);
|
var list = build_list([]);
|
||||||
var message_group = build_message_group([
|
var message_group = build_message_group([
|
||||||
build_message()
|
build_message_context()
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var result = list.merge_message_groups([message_group], 'bottom');
|
var result = list.merge_message_groups([message_group], 'bottom');
|
||||||
@@ -91,12 +95,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_append_message_same_subject() {
|
(function test_append_message_same_subject() {
|
||||||
|
|
||||||
var message1 = build_message();
|
var message1 = build_message_context();
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message();
|
var message2 = build_message_context();
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -117,12 +121,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_append_message_diffrent_subject() {
|
(function test_append_message_diffrent_subject() {
|
||||||
|
|
||||||
var message1 = build_message();
|
var message1 = build_message_context();
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({subject: 'Test subject 2'});
|
var message2 = build_message_context({subject: 'Test subject 2'});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -144,12 +148,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_append_message_diffrent_day() {
|
(function test_append_message_diffrent_day() {
|
||||||
|
|
||||||
var message1 = build_message({timestamp: 1000});
|
var message1 = build_message_context({timestamp: 1000});
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({timestamp: 900000});
|
var message2 = build_message_context({timestamp: 900000});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -171,12 +175,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_append_message_historical() {
|
(function test_append_message_historical() {
|
||||||
|
|
||||||
var message1 = build_message({historical: false});
|
var message1 = build_message_context({historical: false});
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({historical: true});
|
var message2 = build_message_context({historical: true});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -198,12 +202,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_append_message_same_subject_me_message() {
|
(function test_append_message_same_subject_me_message() {
|
||||||
|
|
||||||
var message1 = build_message();
|
var message1 = build_message_context();
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({is_me_message: true});
|
var message2 = build_message_context({}, {is_me_message: true});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -226,12 +230,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_prepend_message_same_subject() {
|
(function test_prepend_message_same_subject() {
|
||||||
|
|
||||||
var message1 = build_message();
|
var message1 = build_message_context();
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message();
|
var message2 = build_message_context();
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -254,12 +258,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_prepend_message_diffrent_subject() {
|
(function test_prepend_message_diffrent_subject() {
|
||||||
|
|
||||||
var message1 = build_message();
|
var message1 = build_message_context();
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({subject: 'Test Subject 2'});
|
var message2 = build_message_context({subject: 'Test Subject 2'});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -280,12 +284,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_prepend_message_diffrent_day() {
|
(function test_prepend_message_diffrent_day() {
|
||||||
|
|
||||||
var message1 = build_message({timestamp: 900000});
|
var message1 = build_message_context({timestamp: 900000});
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({timestamp: 1000});
|
var message2 = build_message_context({timestamp: 1000});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
@@ -307,12 +311,12 @@ set_global('unread', {message_unread: function () {}});
|
|||||||
|
|
||||||
(function test_prepend_message_historical() {
|
(function test_prepend_message_historical() {
|
||||||
|
|
||||||
var message1 = build_message({historical: false});
|
var message1 = build_message_context({historical: false});
|
||||||
var message_group1 = build_message_group([
|
var message_group1 = build_message_group([
|
||||||
message1
|
message1
|
||||||
]);
|
]);
|
||||||
|
|
||||||
var message2 = build_message({historical: true});
|
var message2 = build_message_context({historical: true});
|
||||||
var message_group2 = build_message_group([
|
var message_group2 = build_message_group([
|
||||||
message2
|
message2
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ function render(template_name, args) {
|
|||||||
display_recipient: "support",
|
display_recipient: "support",
|
||||||
is_stream: true,
|
is_stream: true,
|
||||||
message_ids: [1, 2],
|
message_ids: [1, 2],
|
||||||
messages: messages,
|
message_containers: messages,
|
||||||
show_date: '"<span id="timerender82">Jan 07</span>"',
|
show_date: '"<span id="timerender82">Jan 07</span>"',
|
||||||
subject: 'two messages',
|
subject: 'two messages',
|
||||||
match_subject: '<span class="highlight">two</span> messages'
|
match_subject: '<span class="highlight">two</span> messages'
|
||||||
|
|||||||
Reference in New Issue
Block a user