mirror of https://github.com/zulip/zulip.git
Move process_message_for_recent_topics() to stream_data.js.
This commit is contained in:
parent
c799ac3126
commit
8acdf718bc
|
@ -149,6 +149,74 @@ var stream_data = require('js/stream_data.js');
|
||||||
|
|
||||||
}());
|
}());
|
||||||
|
|
||||||
|
(function test_process_message_for_recent_topics() {
|
||||||
|
var message = {
|
||||||
|
stream: 'Rome',
|
||||||
|
timestamp: 101,
|
||||||
|
subject: 'toPic1'
|
||||||
|
};
|
||||||
|
stream_data.process_message_for_recent_topics(message);
|
||||||
|
|
||||||
|
var history = stream_data.recent_subjects.get('Rome');
|
||||||
|
assert.deepEqual(history, [
|
||||||
|
{
|
||||||
|
subject: 'toPic1',
|
||||||
|
canon_subject: 'topic1',
|
||||||
|
count: 1,
|
||||||
|
timestamp: 101
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
message = {
|
||||||
|
stream: 'Rome',
|
||||||
|
timestamp: 102,
|
||||||
|
subject: 'Topic1'
|
||||||
|
};
|
||||||
|
stream_data.process_message_for_recent_topics(message);
|
||||||
|
history = stream_data.recent_subjects.get('Rome');
|
||||||
|
assert.deepEqual(history, [
|
||||||
|
{
|
||||||
|
subject: 'Topic1',
|
||||||
|
canon_subject: 'topic1',
|
||||||
|
count: 2,
|
||||||
|
timestamp: 102
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
message = {
|
||||||
|
stream: 'Rome',
|
||||||
|
timestamp: 103,
|
||||||
|
subject: 'topic2'
|
||||||
|
};
|
||||||
|
stream_data.process_message_for_recent_topics(message);
|
||||||
|
history = stream_data.recent_subjects.get('Rome');
|
||||||
|
assert.deepEqual(history, [
|
||||||
|
{
|
||||||
|
subject: 'topic2',
|
||||||
|
canon_subject: 'topic2',
|
||||||
|
count: 1,
|
||||||
|
timestamp: 103
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subject: 'Topic1',
|
||||||
|
canon_subject: 'topic1',
|
||||||
|
count: 2,
|
||||||
|
timestamp: 102
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
stream_data.process_message_for_recent_topics(message, true);
|
||||||
|
history = stream_data.recent_subjects.get('Rome');
|
||||||
|
assert.deepEqual(history, [
|
||||||
|
{
|
||||||
|
subject: 'Topic1',
|
||||||
|
canon_subject: 'topic1',
|
||||||
|
count: 2,
|
||||||
|
timestamp: 102
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}());
|
||||||
|
|
||||||
(function test_admin_options() {
|
(function test_admin_options() {
|
||||||
function make_sub() {
|
function make_sub() {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -183,9 +183,9 @@ exports.try_deliver_locally = function try_deliver_locally(message_request) {
|
||||||
exports.edit_locally = function edit_locally(message, raw_content, new_topic) {
|
exports.edit_locally = function edit_locally(message, raw_content, new_topic) {
|
||||||
message.raw_content = raw_content;
|
message.raw_content = raw_content;
|
||||||
if (new_topic !== undefined) {
|
if (new_topic !== undefined) {
|
||||||
message_store.process_message_for_recent_topics(message, true);
|
stream_data.process_message_for_recent_topics(message, true);
|
||||||
message.subject = new_topic;
|
message.subject = new_topic;
|
||||||
message_store.process_message_for_recent_topics(message);
|
stream_data.process_message_for_recent_topics(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
message.content = exports.apply_markdown(raw_content);
|
message.content = exports.apply_markdown(raw_content);
|
||||||
|
|
|
@ -39,47 +39,6 @@ exports.get_private_message_recipient = function (message, attr, fallback_attr)
|
||||||
return recipient;
|
return recipient;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.process_message_for_recent_topics = function process_message_for_recent_topics(message, remove_message) {
|
|
||||||
var current_timestamp = 0;
|
|
||||||
var count = 0;
|
|
||||||
var stream = message.stream;
|
|
||||||
var canon_subject = stream_data.canonicalized_name(message.subject);
|
|
||||||
|
|
||||||
if (! stream_data.recent_subjects.has(stream)) {
|
|
||||||
stream_data.recent_subjects.set(stream, []);
|
|
||||||
} else {
|
|
||||||
stream_data.recent_subjects.set(stream, _.filter(stream_data.recent_subjects.get(stream), function (item) {
|
|
||||||
var is_duplicate = (item.canon_subject.toLowerCase() === canon_subject.toLowerCase());
|
|
||||||
if (is_duplicate) {
|
|
||||||
current_timestamp = item.timestamp;
|
|
||||||
count = item.count;
|
|
||||||
}
|
|
||||||
return !is_duplicate;
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
var recents = stream_data.recent_subjects.get(stream);
|
|
||||||
|
|
||||||
if (remove_message !== undefined) {
|
|
||||||
count = count - 1;
|
|
||||||
} else {
|
|
||||||
count = count + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count !== 0) {
|
|
||||||
recents.push({subject: message.subject,
|
|
||||||
canon_subject: canon_subject,
|
|
||||||
count: count,
|
|
||||||
timestamp: Math.max(message.timestamp, current_timestamp)});
|
|
||||||
}
|
|
||||||
|
|
||||||
recents.sort(function (a, b) {
|
|
||||||
return b.timestamp - a.timestamp;
|
|
||||||
});
|
|
||||||
|
|
||||||
stream_data.recent_subjects.set(stream, recents);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.process_message_for_recent_private_messages = function process_message_for_recent_private_messages(message, remove_message) {
|
exports.process_message_for_recent_private_messages = function process_message_for_recent_private_messages(message, remove_message) {
|
||||||
var current_timestamp = 0;
|
var current_timestamp = 0;
|
||||||
|
|
||||||
|
@ -149,7 +108,7 @@ function add_message_metadata(message) {
|
||||||
composebox_typeahead.add_topic(message.stream, message.subject);
|
composebox_typeahead.add_topic(message.stream, message.subject);
|
||||||
message.reply_to = message.sender_email;
|
message.reply_to = message.sender_email;
|
||||||
|
|
||||||
exports.process_message_for_recent_topics(message);
|
stream_data.process_message_for_recent_topics(message);
|
||||||
|
|
||||||
involved_people = [{'full_name': message.sender_full_name,
|
involved_people = [{'full_name': message.sender_full_name,
|
||||||
'email': message.sender_email}];
|
'email': message.sender_email}];
|
||||||
|
@ -334,7 +293,7 @@ exports.update_messages = function update_messages(events) {
|
||||||
|
|
||||||
// Remove the recent topics entry for the old topics;
|
// Remove the recent topics entry for the old topics;
|
||||||
// must be called before we update msg.subject
|
// must be called before we update msg.subject
|
||||||
exports.process_message_for_recent_topics(msg, true);
|
stream_data.process_message_for_recent_topics(msg, true);
|
||||||
// Update the unread counts; again, this must be called
|
// Update the unread counts; again, this must be called
|
||||||
// before we update msg.subject
|
// before we update msg.subject
|
||||||
unread.update_unread_topics(msg, event);
|
unread.update_unread_topics(msg, event);
|
||||||
|
@ -344,7 +303,7 @@ exports.update_messages = function update_messages(events) {
|
||||||
set_topic_edit_properties(msg);
|
set_topic_edit_properties(msg);
|
||||||
// Add the recent topics entry for the new topics; must
|
// Add the recent topics entry for the new topics; must
|
||||||
// be called after we update msg.subject
|
// be called after we update msg.subject
|
||||||
exports.process_message_for_recent_topics(msg);
|
stream_data.process_message_for_recent_topics(msg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -230,6 +230,47 @@ exports.add_admin_options = function (sub) {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.process_message_for_recent_topics = function process_message_for_recent_topics(message, remove_message) {
|
||||||
|
var current_timestamp = 0;
|
||||||
|
var count = 0;
|
||||||
|
var stream = message.stream;
|
||||||
|
var canon_subject = exports.canonicalized_name(message.subject);
|
||||||
|
|
||||||
|
if (! exports.recent_subjects.has(stream)) {
|
||||||
|
exports.recent_subjects.set(stream, []);
|
||||||
|
} else {
|
||||||
|
exports.recent_subjects.set(stream, _.filter(exports.recent_subjects.get(stream), function (item) {
|
||||||
|
var is_duplicate = (item.canon_subject.toLowerCase() === canon_subject.toLowerCase());
|
||||||
|
if (is_duplicate) {
|
||||||
|
current_timestamp = item.timestamp;
|
||||||
|
count = item.count;
|
||||||
|
}
|
||||||
|
return !is_duplicate;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
var recents = exports.recent_subjects.get(stream);
|
||||||
|
|
||||||
|
if (remove_message !== undefined) {
|
||||||
|
count = count - 1;
|
||||||
|
} else {
|
||||||
|
count = count + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count !== 0) {
|
||||||
|
recents.push({subject: message.subject,
|
||||||
|
canon_subject: canon_subject,
|
||||||
|
count: count,
|
||||||
|
timestamp: Math.max(message.timestamp, current_timestamp)});
|
||||||
|
}
|
||||||
|
|
||||||
|
recents.sort(function (a, b) {
|
||||||
|
return b.timestamp - a.timestamp;
|
||||||
|
});
|
||||||
|
|
||||||
|
exports.recent_subjects.set(stream, recents);
|
||||||
|
};
|
||||||
|
|
||||||
exports.get_streams_for_settings_page = function () {
|
exports.get_streams_for_settings_page = function () {
|
||||||
// Build up our list of subscribed streams from the data we already have.
|
// Build up our list of subscribed streams from the data we already have.
|
||||||
var subscribed_rows = exports.subscribed_subs();
|
var subscribed_rows = exports.subscribed_subs();
|
||||||
|
|
Loading…
Reference in New Issue