mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 14:03:30 +00:00
Extract topic_data.js.
This new module tracks the recent topic names for any given stream. The code was pulled over almost verbatim from stream_data.js, with minor renames to the function names. We introduced a minor one-line function called stream_has_topics.
This commit is contained in:
@@ -107,6 +107,7 @@
|
|||||||
"admin_sections": false,
|
"admin_sections": false,
|
||||||
"admin": false,
|
"admin": false,
|
||||||
"stream_data": false,
|
"stream_data": false,
|
||||||
|
"topic_data": false,
|
||||||
"list_util": false,
|
"list_util": false,
|
||||||
"muting": false,
|
"muting": false,
|
||||||
"Dict": false,
|
"Dict": false,
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
add_dependencies({
|
add_dependencies({
|
||||||
people: 'js/people.js',
|
people: 'js/people.js',
|
||||||
util: 'js/util.js',
|
|
||||||
pm_conversations: 'js/pm_conversations.js',
|
pm_conversations: 'js/pm_conversations.js',
|
||||||
|
topic_data: 'js/topic_data.js',
|
||||||
|
util: 'js/util.js',
|
||||||
});
|
});
|
||||||
|
|
||||||
var noop = function () {};
|
var noop = function () {};
|
||||||
@@ -15,8 +16,8 @@ set_global('alert_words', {
|
|||||||
process_message: noop,
|
process_message: noop,
|
||||||
});
|
});
|
||||||
|
|
||||||
set_global('stream_data' , {
|
set_global('topic_data' , {
|
||||||
process_message_for_recent_topics: noop,
|
process_message: noop,
|
||||||
});
|
});
|
||||||
|
|
||||||
set_global('recent_senders', {
|
set_global('recent_senders', {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ add_dependencies({
|
|||||||
typeahead_helper: 'js/typeahead_helper.js',
|
typeahead_helper: 'js/typeahead_helper.js',
|
||||||
people: 'js/people.js',
|
people: 'js/people.js',
|
||||||
stream_data: 'js/stream_data.js',
|
stream_data: 'js/stream_data.js',
|
||||||
|
topic_data: 'js/topic_data.js',
|
||||||
narrow_state: 'js/narrow_state.js',
|
narrow_state: 'js/narrow_state.js',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -35,7 +36,7 @@ init();
|
|||||||
|
|
||||||
set_global('narrow', {});
|
set_global('narrow', {});
|
||||||
|
|
||||||
global.stream_data.populate_stream_topics_for_tests({});
|
topic_data.populate_for_tests({});
|
||||||
|
|
||||||
(function test_basic_get_suggestions() {
|
(function test_basic_get_suggestions() {
|
||||||
var query = 'fred';
|
var query = 'fred';
|
||||||
@@ -575,7 +576,7 @@ init();
|
|||||||
};
|
};
|
||||||
|
|
||||||
var recent_data = {};
|
var recent_data = {};
|
||||||
global.stream_data.populate_stream_topics_for_tests(recent_data);
|
topic_data.populate_for_tests(recent_data);
|
||||||
suggestions = search.get_suggestions('te');
|
suggestions = search.get_suggestions('te');
|
||||||
expected = [
|
expected = [
|
||||||
"te",
|
"te",
|
||||||
@@ -592,7 +593,7 @@ init();
|
|||||||
{name: 'test'},
|
{name: 'test'},
|
||||||
];
|
];
|
||||||
|
|
||||||
global.stream_data.populate_stream_topics_for_tests(recent_data);
|
topic_data.populate_for_tests(recent_data);
|
||||||
|
|
||||||
suggestions = search.get_suggestions('te');
|
suggestions = search.get_suggestions('te');
|
||||||
expected = [
|
expected = [
|
||||||
@@ -677,7 +678,7 @@ init();
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
global.stream_data.populate_stream_topics_for_tests({});
|
topic_data.populate_for_tests({});
|
||||||
|
|
||||||
var suggestions = search.get_suggestions(query);
|
var suggestions = search.get_suggestions(query);
|
||||||
|
|
||||||
@@ -697,7 +698,7 @@ init();
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
global.stream_data.populate_stream_topics_for_tests({});
|
topic_data.populate_for_tests({});
|
||||||
|
|
||||||
var query = 'stream:of';
|
var query = 'stream:of';
|
||||||
var suggestions = search.get_suggestions(query);
|
var suggestions = search.get_suggestions(query);
|
||||||
@@ -749,7 +750,7 @@ init();
|
|||||||
people.add(alice);
|
people.add(alice);
|
||||||
|
|
||||||
|
|
||||||
global.stream_data.populate_stream_topics_for_tests({
|
topic_data.populate_for_tests({
|
||||||
office: [
|
office: [
|
||||||
{name: 'team'},
|
{name: 'team'},
|
||||||
{name: 'ignore'},
|
{name: 'ignore'},
|
||||||
@@ -881,7 +882,7 @@ init();
|
|||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
|
||||||
global.stream_data.populate_stream_topics_for_tests({});
|
topic_data.populate_for_tests({});
|
||||||
|
|
||||||
// test allowing spaces with quotes surrounding operand
|
// test allowing spaces with quotes surrounding operand
|
||||||
var query = 'stream:"dev he"';
|
var query = 'stream:"dev he"';
|
||||||
|
|||||||
@@ -13,12 +13,14 @@ add_dependencies({
|
|||||||
narrow: 'js/narrow.js',
|
narrow: 'js/narrow.js',
|
||||||
hash_util: 'js/hash_util.js',
|
hash_util: 'js/hash_util.js',
|
||||||
hashchange: 'js/hashchange.js',
|
hashchange: 'js/hashchange.js',
|
||||||
|
topic_data: 'js/topic_data.js',
|
||||||
util: 'js/util.js',
|
util: 'js/util.js',
|
||||||
});
|
});
|
||||||
|
|
||||||
set_global('blueslip', {});
|
set_global('blueslip', {});
|
||||||
|
|
||||||
var stream_data = require('js/stream_data.js');
|
var stream_data = require('js/stream_data.js');
|
||||||
|
|
||||||
var people = global.people;
|
var people = global.people;
|
||||||
|
|
||||||
(function test_basics() {
|
(function test_basics() {
|
||||||
@@ -240,7 +242,7 @@ var people = global.people;
|
|||||||
assert(!ok);
|
assert(!ok);
|
||||||
}());
|
}());
|
||||||
|
|
||||||
(function test_process_message_for_recent_topics() {
|
(function test_process_message() {
|
||||||
var stream_id = 55;
|
var stream_id = 55;
|
||||||
|
|
||||||
var rome = {
|
var rome = {
|
||||||
@@ -255,9 +257,9 @@ var people = global.people;
|
|||||||
timestamp: 101,
|
timestamp: 101,
|
||||||
subject: 'toPic1',
|
subject: 'toPic1',
|
||||||
};
|
};
|
||||||
stream_data.process_message_for_recent_topics(message);
|
topic_data.process_message(message);
|
||||||
|
|
||||||
var history = stream_data.get_recent_topic_names(rome.stream_id);
|
var history = topic_data.get_recent_names(rome.stream_id);
|
||||||
assert.deepEqual(history, ['toPic1']);
|
assert.deepEqual(history, ['toPic1']);
|
||||||
|
|
||||||
message = {
|
message = {
|
||||||
@@ -265,8 +267,8 @@ var people = global.people;
|
|||||||
timestamp: 102,
|
timestamp: 102,
|
||||||
subject: 'Topic1',
|
subject: 'Topic1',
|
||||||
};
|
};
|
||||||
stream_data.process_message_for_recent_topics(message);
|
topic_data.process_message(message);
|
||||||
history = stream_data.get_recent_topic_names(rome.stream_id);
|
history = topic_data.get_recent_names(rome.stream_id);
|
||||||
assert.deepEqual(history, ['Topic1']);
|
assert.deepEqual(history, ['Topic1']);
|
||||||
|
|
||||||
message = {
|
message = {
|
||||||
@@ -274,12 +276,12 @@ var people = global.people;
|
|||||||
timestamp: 103,
|
timestamp: 103,
|
||||||
subject: 'topic2',
|
subject: 'topic2',
|
||||||
};
|
};
|
||||||
stream_data.process_message_for_recent_topics(message);
|
topic_data.process_message(message);
|
||||||
history = stream_data.get_recent_topic_names(rome.stream_id);
|
history = topic_data.get_recent_names(rome.stream_id);
|
||||||
assert.deepEqual(history, ['topic2', 'Topic1']);
|
assert.deepEqual(history, ['topic2', 'Topic1']);
|
||||||
|
|
||||||
stream_data.process_message_for_recent_topics(message, true);
|
topic_data.process_message(message, true);
|
||||||
history = stream_data.get_recent_topic_names(rome.stream_id);
|
history = topic_data.get_recent_names(rome.stream_id);
|
||||||
assert.deepEqual(history, ['Topic1']);
|
assert.deepEqual(history, ['Topic1']);
|
||||||
}());
|
}());
|
||||||
|
|
||||||
@@ -307,7 +309,7 @@ var people = global.people;
|
|||||||
timestamp: 108,
|
timestamp: 108,
|
||||||
subject: 'topic2',
|
subject: 'topic2',
|
||||||
};
|
};
|
||||||
stream_data.process_message_for_recent_topics(message);
|
topic_data.process_message(message);
|
||||||
|
|
||||||
assert(stream_data.is_active(sub));
|
assert(stream_data.is_active(sub));
|
||||||
}());
|
}());
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ add_dependencies({
|
|||||||
stream_color: 'js/stream_color',
|
stream_color: 'js/stream_color',
|
||||||
stream_data: 'js/stream_data',
|
stream_data: 'js/stream_data',
|
||||||
stream_sort: 'js/stream_sort',
|
stream_sort: 'js/stream_sort',
|
||||||
|
topic_data: 'js/topic_data',
|
||||||
unread: 'js/unread',
|
unread: 'js/unread',
|
||||||
unread_ui: 'js/unread_ui',
|
unread_ui: 'js/unread_ui',
|
||||||
util: 'js/util',
|
util: 'js/util',
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ add_dependencies({
|
|||||||
muting: 'js/muting',
|
muting: 'js/muting',
|
||||||
stream_data: 'js/stream_data',
|
stream_data: 'js/stream_data',
|
||||||
stream_sort: 'js/stream_sort',
|
stream_sort: 'js/stream_sort',
|
||||||
|
topic_data: 'js/topic_data',
|
||||||
unread: 'js/unread',
|
unread: 'js/unread',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -182,7 +183,7 @@ function is_odd(i) { return i % 2 === 1; }
|
|||||||
devel: devel_stream_id,
|
devel: devel_stream_id,
|
||||||
};
|
};
|
||||||
|
|
||||||
global.stream_data.get_recent_topic_names = function (stream_id) {
|
topic_data.get_recent_names = function (stream_id) {
|
||||||
switch (stream_id) {
|
switch (stream_id) {
|
||||||
case muted_stream_id:
|
case muted_stream_id:
|
||||||
return ['red herring'];
|
return ['red herring'];
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ add_dependencies({
|
|||||||
muting: 'js/muting',
|
muting: 'js/muting',
|
||||||
narrow: 'js/narrow',
|
narrow: 'js/narrow',
|
||||||
stream_data: 'js/stream_data',
|
stream_data: 'js/stream_data',
|
||||||
|
topic_data: 'js/topic_data',
|
||||||
templates: 'js/templates',
|
templates: 'js/templates',
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -27,7 +28,7 @@ global.compile_template('topic_list_item');
|
|||||||
recent_topics[stream_id] = [
|
recent_topics[stream_id] = [
|
||||||
{name: "coding"},
|
{name: "coding"},
|
||||||
];
|
];
|
||||||
global.stream_data.populate_stream_topics_for_tests(recent_topics);
|
topic_data.populate_for_tests(recent_topics);
|
||||||
global.unread.num_unread_for_subject = function () {
|
global.unread.num_unread_for_subject = function () {
|
||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -152,9 +152,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) {
|
||||||
stream_data.process_message_for_recent_topics(message, true);
|
topic_data.process_message(message, true);
|
||||||
message.subject = new_topic;
|
message.subject = new_topic;
|
||||||
stream_data.process_message_for_recent_topics(message);
|
topic_data.process_message(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
markdown.apply_markdown(message);
|
markdown.apply_markdown(message);
|
||||||
|
|||||||
@@ -186,7 +186,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
|
||||||
stream_data.process_message_for_recent_topics(msg, true);
|
topic_data.process_message(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);
|
||||||
@@ -196,7 +196,7 @@ exports.update_messages = function update_messages(events) {
|
|||||||
message_store.set_topic_edit_properties(msg);
|
message_store.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
|
||||||
stream_data.process_message_for_recent_topics(msg);
|
topic_data.process_message(msg);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ exports.add_message_metadata = function (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;
|
||||||
|
|
||||||
stream_data.process_message_for_recent_topics(message);
|
topic_data.process_message(message);
|
||||||
exports.set_topic_edit_properties(message);
|
exports.set_topic_edit_properties(message);
|
||||||
|
|
||||||
recent_senders.process_message_for_senders(message);
|
recent_senders.process_message_for_senders(message);
|
||||||
|
|||||||
@@ -317,7 +317,7 @@ function get_topic_suggestions(last, operators) {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
var topics = stream_data.get_recent_topic_names(stream_id);
|
var topics = topic_data.get_recent_names(stream_id);
|
||||||
|
|
||||||
if (!topics || !topics.length) {
|
if (!topics || !topics.length) {
|
||||||
return [];
|
return [];
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ var exports = {};
|
|||||||
// Call clear_subscriptions() to initialize it.
|
// Call clear_subscriptions() to initialize it.
|
||||||
var stream_info;
|
var stream_info;
|
||||||
var subs_by_stream_id;
|
var subs_by_stream_id;
|
||||||
var recent_topics = new Dict(); // stream_id -> array of objects
|
|
||||||
|
|
||||||
var stream_ids_by_name = new Dict({fold_case: true});
|
var stream_ids_by_name = new Dict({fold_case: true});
|
||||||
|
|
||||||
@@ -21,7 +20,7 @@ exports.clear_subscriptions = function () {
|
|||||||
exports.clear_subscriptions();
|
exports.clear_subscriptions();
|
||||||
|
|
||||||
exports.is_active = function (sub) {
|
exports.is_active = function (sub) {
|
||||||
return recent_topics.has(sub.stream_id) || sub.newly_subscribed;
|
return topic_data.stream_has_topics(sub.stream_id) || sub.newly_subscribed;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.rename_sub = function (sub, new_name) {
|
exports.rename_sub = function (sub, new_name) {
|
||||||
@@ -380,44 +379,6 @@ exports.receives_audible_notifications = function (stream_name) {
|
|||||||
return sub.audible_notifications;
|
return sub.audible_notifications;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.process_message_for_recent_topics = function process_message_for_recent_topics(
|
|
||||||
message, remove_message) {
|
|
||||||
var current_timestamp = 0;
|
|
||||||
var count = 0;
|
|
||||||
var stream_id = message.stream_id;
|
|
||||||
var canon_topic = message.subject.toLowerCase();
|
|
||||||
|
|
||||||
var recents = recent_topics.get(stream_id) || [];
|
|
||||||
|
|
||||||
recents = _.filter(recents, function (item) {
|
|
||||||
var is_duplicate = (
|
|
||||||
item.name.toLowerCase() === canon_topic);
|
|
||||||
if (is_duplicate) {
|
|
||||||
current_timestamp = item.timestamp;
|
|
||||||
count = item.count;
|
|
||||||
}
|
|
||||||
return !is_duplicate;
|
|
||||||
});
|
|
||||||
|
|
||||||
if (remove_message !== undefined) {
|
|
||||||
count = count - 1;
|
|
||||||
} else {
|
|
||||||
count = count + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count !== 0) {
|
|
||||||
recents.push({name: message.subject,
|
|
||||||
count: count,
|
|
||||||
timestamp: Math.max(message.timestamp, current_timestamp)});
|
|
||||||
}
|
|
||||||
|
|
||||||
recents.sort(function (a, b) {
|
|
||||||
return b.timestamp - a.timestamp;
|
|
||||||
});
|
|
||||||
|
|
||||||
recent_topics.set(stream_id, 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();
|
||||||
@@ -472,23 +433,6 @@ exports.initialize_from_page_params = function () {
|
|||||||
delete page_params.never_subscribed;
|
delete page_params.never_subscribed;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.get_recent_topic_names = function (stream_id) {
|
|
||||||
var topic_objs = recent_topics.get(stream_id);
|
|
||||||
|
|
||||||
if (!topic_objs) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
return _.map(topic_objs, function (obj) {
|
|
||||||
return obj.name;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.populate_stream_topics_for_tests = function (stream_map) {
|
|
||||||
// This is only used by tests.
|
|
||||||
recent_topics = Dict.from(stream_map);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.get_newbie_stream = function () {
|
exports.get_newbie_stream = function () {
|
||||||
// This is the stream that we narrow folks to after the tutorial.
|
// This is the stream that we narrow folks to after the tutorial.
|
||||||
|
|
||||||
|
|||||||
70
static/js/topic_data.js
Normal file
70
static/js/topic_data.js
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
var topic_data = (function () {
|
||||||
|
|
||||||
|
var exports = {};
|
||||||
|
|
||||||
|
var recent_topics = new Dict(); // stream_id -> array of objects
|
||||||
|
|
||||||
|
exports.stream_has_topics = function (stream_id) {
|
||||||
|
return recent_topics.has(stream_id);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.process_message = function (message, remove_message) {
|
||||||
|
var current_timestamp = 0;
|
||||||
|
var count = 0;
|
||||||
|
var stream_id = message.stream_id;
|
||||||
|
var canon_topic = message.subject.toLowerCase();
|
||||||
|
|
||||||
|
var recents = recent_topics.get(stream_id) || [];
|
||||||
|
|
||||||
|
recents = _.filter(recents, function (item) {
|
||||||
|
var is_duplicate = (
|
||||||
|
item.name.toLowerCase() === canon_topic);
|
||||||
|
if (is_duplicate) {
|
||||||
|
current_timestamp = item.timestamp;
|
||||||
|
count = item.count;
|
||||||
|
}
|
||||||
|
return !is_duplicate;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (remove_message !== undefined) {
|
||||||
|
count = count - 1;
|
||||||
|
} else {
|
||||||
|
count = count + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count !== 0) {
|
||||||
|
recents.push({name: message.subject,
|
||||||
|
count: count,
|
||||||
|
timestamp: Math.max(message.timestamp, current_timestamp)});
|
||||||
|
}
|
||||||
|
|
||||||
|
recents.sort(function (a, b) {
|
||||||
|
return b.timestamp - a.timestamp;
|
||||||
|
});
|
||||||
|
|
||||||
|
recent_topics.set(stream_id, recents);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.get_recent_names = function (stream_id) {
|
||||||
|
var topic_objs = recent_topics.get(stream_id);
|
||||||
|
|
||||||
|
if (!topic_objs) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return _.map(topic_objs, function (obj) {
|
||||||
|
return obj.name;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.populate_for_tests = function (stream_map) {
|
||||||
|
// This is only used by tests.
|
||||||
|
recent_topics = Dict.from(stream_map);
|
||||||
|
};
|
||||||
|
|
||||||
|
return exports;
|
||||||
|
|
||||||
|
}());
|
||||||
|
if (typeof module !== 'undefined') {
|
||||||
|
module.exports = topic_data;
|
||||||
|
}
|
||||||
@@ -164,7 +164,7 @@ exports.get_next_topic = function (curr_stream, curr_topic) {
|
|||||||
|
|
||||||
function get_unmuted_topics(stream_name) {
|
function get_unmuted_topics(stream_name) {
|
||||||
var stream_id = stream_data.get_stream_id(stream_name);
|
var stream_id = stream_data.get_stream_id(stream_name);
|
||||||
var topics = stream_data.get_recent_topic_names(stream_id);
|
var topics = topic_data.get_recent_names(stream_id);
|
||||||
topics = _.reject(topics, function (topic) {
|
topics = _.reject(topics, function (topic) {
|
||||||
return muting.is_topic_muted(stream_name, topic);
|
return muting.is_topic_muted(stream_name, topic);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ exports.build_widget = function (parent_elem, my_stream_id, active_topic, max_to
|
|||||||
var my_stream_name = stream_data.get_sub_by_id(my_stream_id).name;
|
var my_stream_name = stream_data.get_sub_by_id(my_stream_id).name;
|
||||||
|
|
||||||
function build_list(active_topic, max_topics) {
|
function build_list(active_topic, max_topics) {
|
||||||
var topic_names = stream_data.get_recent_topic_names(my_stream_id);
|
var topic_names = topic_data.get_recent_names(my_stream_id);
|
||||||
|
|
||||||
if (active_topic) {
|
if (active_topic) {
|
||||||
active_topic = active_topic.toLowerCase();
|
active_topic = active_topic.toLowerCase();
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ enforce_fully_covered = {
|
|||||||
'static/js/search_suggestion.js',
|
'static/js/search_suggestion.js',
|
||||||
'static/js/stream_events.js',
|
'static/js/stream_events.js',
|
||||||
'static/js/stream_sort.js',
|
'static/js/stream_sort.js',
|
||||||
|
'static/js/topic_data.js',
|
||||||
'static/js/topic_generator.js',
|
'static/js/topic_generator.js',
|
||||||
'static/js/typeahead_helper.js',
|
'static/js/typeahead_helper.js',
|
||||||
'static/js/typing_data.js',
|
'static/js/typing_data.js',
|
||||||
|
|||||||
@@ -875,6 +875,7 @@ JS_SPECS = {
|
|||||||
'js/compose.js',
|
'js/compose.js',
|
||||||
'js/stream_color.js',
|
'js/stream_color.js',
|
||||||
'js/stream_data.js',
|
'js/stream_data.js',
|
||||||
|
'js/topic_data.js',
|
||||||
'js/stream_muting.js',
|
'js/stream_muting.js',
|
||||||
'js/stream_events.js',
|
'js/stream_events.js',
|
||||||
'js/stream_create.js',
|
'js/stream_create.js',
|
||||||
|
|||||||
Reference in New Issue
Block a user