diff --git a/static/js/composebox_typeahead.js b/static/js/composebox_typeahead.js index 0509d654f9..72527ea39a 100644 --- a/static/js/composebox_typeahead.js +++ b/static/js/composebox_typeahead.js @@ -28,6 +28,32 @@ exports.get_cleaned_pm_recipients = function (query_string) { return recipients; }; +function case_insensitive_find(term, array) { + var lowered_term = term.toLowerCase(); + return _.filter(array, function (elt) { + return elt.toLowerCase() === lowered_term; + }).length !== 0; +} + +var seen_topics = new Dict(); + +exports.add_topic = function (stream, topic) { + if (! seen_topics.has(stream)) { + seen_topics.set(stream, []); + } + if (! case_insensitive_find(topic, seen_topics.get(stream))) { + seen_topics.get(stream).push(topic); + seen_topics.get(stream).sort(); + } +}; + +exports.topics_seen_for = function (stream) { + if (seen_topics.has(stream)) { + return seen_topics.get(stream); + } + return []; +}; + function get_last_recipient_in_pm(query_string) { var recipients = get_pm_recipients(query_string); return recipients[recipients.length-1]; @@ -202,11 +228,8 @@ exports.initialize = function () { $( "#subject" ).typeahead({ source: function (query, process) { - var stream_name = $("#stream").val(), i; - if (subject_dict.has(stream_name)) { - return subject_dict.get(stream_name); - } - return []; + var stream_name = $("#stream").val(); + return exports.topics_seen_for(stream_name); }, items: 3, highlighter: composebox_typeahead_highlighter, diff --git a/static/js/zulip.js b/static/js/zulip.js index 23b384225e..8856e32c31 100644 --- a/static/js/zulip.js +++ b/static/js/zulip.js @@ -5,7 +5,6 @@ var home_msg_list = new MessageList('zhome', ); var narrowed_msg_list; var current_msg_list = home_msg_list; -var subject_dict = new Dict(); var people_dict = new Dict(); var recent_subjects = new Dict(); @@ -474,13 +473,6 @@ function unconditionally_send_pointer_update() { } } -function case_insensitive_find(term, array) { - var lowered_term = term.toLowerCase(); - return _.filter(array, function (elt) { - return elt.toLowerCase() === lowered_term; - }).length !== 0; -} - function process_message_for_recent_subjects(message, remove_message) { var current_timestamp = 0; var count = 0; @@ -554,13 +546,7 @@ function add_message_metadata(message) { case 'stream': message.is_stream = true; message.stream = message.display_recipient; - if (! subject_dict.has(message.stream)) { - subject_dict.set(message.stream, []); - } - if (! case_insensitive_find(message.subject, subject_dict.get(message.stream))) { - subject_dict.get(message.stream).push(message.subject); - subject_dict.get(message.stream).sort(); - } + composebox_typeahead.add_topic(message.stream, message.subject); message.reply_to = message.sender_email; process_message_for_recent_subjects(message); diff --git a/tools/jslint/check-all.js b/tools/jslint/check-all.js index aed5035eeb..ccd331d3f7 100644 --- a/tools/jslint/check-all.js +++ b/tools/jslint/check-all.js @@ -40,7 +40,7 @@ var globals = // zulip.js + ' all_msg_list home_msg_list narrowed_msg_list current_msg_list get_updates_params' + ' add_messages' - + ' subject_dict people_dict' + + ' people_dict' + ' keep_pointer_in_view' + ' respond_to_message recenter_view last_viewport_movement_direction' + ' scroll_to_selected get_private_message_recipient'