Move "already read" check into process_read_messages and rename it.

Functions were supposed to check that messages were unread before
passing them to process_read_messages, but some didn't.

The `mark_messages_as_read` function was essentially that, so
take that name.

(imported from commit 2917fe30d2defb8a047ec32e1bc70d379779276b)
This commit is contained in:
Kevin Mehall
2013-08-05 14:15:35 -04:00
parent eac6463031
commit ec927416a0

View File

@@ -330,11 +330,16 @@ function process_loaded_for_unread(messages) {
} }
// Takes a list of messages and marks them as read // Takes a list of messages and marks them as read
function process_read_messages(messages, options) { function mark_messages_as_read(messages, options) {
options = options || {}; options = options || {};
var processed = []; var processed = [];
_.each(messages, function (message) { _.each(messages, function (message) {
if (!unread.message_unread(message)) {
// Don't do anything if the message is already read.
return;
}
message.flags = message.flags || []; message.flags = message.flags || [];
message.flags.push('read'); message.flags.push('read');
@@ -358,7 +363,6 @@ function process_read_messages(messages, options) {
if (narrowed_msg_list) { if (narrowed_msg_list) {
narrowed_msg_list.show_message_as_read(message, options); narrowed_msg_list.show_message_as_read(message, options);
} }
}); });
if (processed.length > 0) { if (processed.length > 0) {
@@ -369,9 +373,12 @@ function process_read_messages(messages, options) {
} }
queued_flag_timer = setTimeout(send_queued_flags, 1000); queued_flag_timer = setTimeout(send_queued_flags, 1000);
update_unread_counts();
} }
}
update_unread_counts(); function mark_message_as_read(message, options) {
mark_messages_as_read([message], options);
} }
// If we ever materially change the algorithm for this function, we // If we ever materially change the algorithm for this function, we
@@ -386,29 +393,12 @@ function process_visible_unread_messages(update_cursor) {
mark_current_list_as_read(); mark_current_list_as_read();
} }
} else { } else {
var visible_messages = viewport.visible_messages(); mark_messages_as_read(viewport.visible_messages());
var mark_as_read = _.filter(visible_messages, unread.message_unread);
if (mark_as_read.length > 0) {
process_read_messages(mark_as_read);
}
} }
} }
function mark_messages_as_read(msg_list, options) {
var unread_msgs = _.filter(msg_list, unread.message_unread);
process_read_messages(unread_msgs, options);
}
function mark_current_list_as_read(options) { function mark_current_list_as_read(options) {
var unread_msgs = _.filter(current_msg_list.all(), unread.message_unread); mark_messages_as_read(current_msg_list.all(), options);
process_read_messages(unread_msgs, options);
}
function mark_message_as_read(message, options) {
// This seems like a rather pointless wrapper, but
// process_read_messages() should stay as an internal API.
process_read_messages([message], options);
} }
function respond_to_message(opts) { function respond_to_message(opts) {