diff --git a/frontend_tests/node_tests/settings_muted_topics.js b/frontend_tests/node_tests/settings_muted_topics.js index d30fc7c1a4..92895b3257 100644 --- a/frontend_tests/node_tests/settings_muted_topics.js +++ b/frontend_tests/node_tests/settings_muted_topics.js @@ -21,10 +21,10 @@ const frontend = { }; stream_data.add_sub(frontend); -run_test("settings", () => { +run_test("settings", (override) => { muting.add_muted_topic(frontend.stream_id, "js", 1577836800); - let set_up_topic_ui_called = false; - muting_ui.set_up_muted_topics_ui = () => { + let populate_list_called = false; + override(settings_muted_topics, "populate_list", () => { const opts = muting.get_muted_topics(); assert.deepEqual(opts, [ { @@ -35,14 +35,15 @@ run_test("settings", () => { topic: "js", }, ]); - set_up_topic_ui_called = true; - }; + populate_list_called = true; + }); settings_muted_topics.reset(); assert.equal(settings_muted_topics.loaded, false); settings_muted_topics.set_up(); assert.equal(settings_muted_topics.loaded, true); + assert(populate_list_called); const topic_click_handler = $("body").get_on_handler("click", ".settings-unmute-topic"); assert.equal(typeof topic_click_handler, "function"); @@ -81,6 +82,5 @@ run_test("settings", () => { }; topic_click_handler.call(topic_fake_this, event); assert(unmute_topic_called); - assert(set_up_topic_ui_called); assert.equal(topic_data_called, 2); }); diff --git a/static/js/muting_ui.js b/static/js/muting_ui.js index 2f0da26a61..e3cc4e8db3 100644 --- a/static/js/muting_ui.js +++ b/static/js/muting_ui.js @@ -1,7 +1,6 @@ import $ from "jquery"; import render_confirm_mute_user from "../templates/confirm_mute_user.hbs"; -import render_muted_topic_ui_row from "../templates/muted_topic_ui_row.hbs"; import render_topic_muted from "../templates/topic_muted.hbs"; import * as activity from "./activity"; @@ -9,7 +8,6 @@ import * as channel from "./channel"; import * as confirm_dialog from "./confirm_dialog"; import * as feedback_widget from "./feedback_widget"; import {$t} from "./i18n"; -import * as ListWidget from "./list_widget"; import * as message_lists from "./message_lists"; import * as muting from "./muting"; import * as overlays from "./overlays"; @@ -21,7 +19,6 @@ import * as settings_muted_users from "./settings_muted_users"; import * as stream_data from "./stream_data"; import * as stream_list from "./stream_list"; import * as stream_popover from "./stream_popover"; -import * as ui from "./ui"; import * as unread_ui from "./unread_ui"; function timestamp_ms() { @@ -43,7 +40,7 @@ export function rerender_on_topic_update() { message_lists.home.update_topic_muting_and_rerender(); } if (overlays.settings_open() && settings_muted_topics.loaded) { - set_up_muted_topics_ui(); + settings_muted_topics.populate_list(); } } @@ -92,30 +89,6 @@ export function update_muted_topics(muted_topics) { unread_ui.update_unread_counts(); } -export function set_up_muted_topics_ui() { - const muted_topics = muting.get_muted_topics(); - const muted_topics_table = $("#muted_topics_table"); - const $search_input = $("#muted_topics_search"); - - ListWidget.create(muted_topics_table, muted_topics, { - name: "muted-topics-list", - modifier(muted_topics) { - return render_muted_topic_ui_row({muted_topics}); - }, - filter: { - element: $search_input, - predicate(item, value) { - return item.topic.toLocaleLowerCase().includes(value); - }, - onupdate() { - ui.reset_scrollbar(muted_topics_table.closest(".progressive-table-wrapper")); - }, - }, - parent_container: $("#muted-topic-settings"), - simplebar_container: $("#muted-topic-settings .progressive-table-wrapper"), - }); -} - export function mute_topic(stream_id, topic) { const stream_name = stream_data.maybe_get_stream_name(stream_id); diff --git a/static/js/settings_muted_topics.js b/static/js/settings_muted_topics.js index 43f2574e0d..6129aae3e6 100644 --- a/static/js/settings_muted_topics.js +++ b/static/js/settings_muted_topics.js @@ -1,9 +1,38 @@ import $ from "jquery"; +import render_muted_topic_ui_row from "../templates/muted_topic_ui_row.hbs"; + +import * as ListWidget from "./list_widget"; +import * as muting from "./muting"; import * as muting_ui from "./muting_ui"; +import * as ui from "./ui"; export let loaded = false; +export function populate_list() { + const muted_topics = muting.get_muted_topics(); + const muted_topics_table = $("#muted_topics_table"); + const $search_input = $("#muted_topics_search"); + + ListWidget.create(muted_topics_table, muted_topics, { + name: "muted-topics-list", + modifier(muted_topics) { + return render_muted_topic_ui_row({muted_topics}); + }, + filter: { + element: $search_input, + predicate(item, value) { + return item.topic.toLocaleLowerCase().includes(value); + }, + onupdate() { + ui.reset_scrollbar(muted_topics_table.closest(".progressive-table-wrapper")); + }, + }, + parent_container: $("#muted-topic-settings"), + simplebar_container: $("#muted-topic-settings .progressive-table-wrapper"), + }); +} + export function set_up() { loaded = true; $("body").on("click", ".settings-unmute-topic", function (e) { @@ -17,7 +46,7 @@ export function set_up() { $row.remove(); }); - muting_ui.set_up_muted_topics_ui(); + populate_list(); } export function reset() { diff --git a/tools/test-js-with-node b/tools/test-js-with-node index c53ab373f5..5de15edc4b 100755 --- a/tools/test-js-with-node +++ b/tools/test-js-with-node @@ -125,6 +125,7 @@ EXEMPT_FILES = { "static/js/settings.js", "static/js/settings_linkifiers.js", "static/js/settings_playgrounds.js", + "static/js/settings_muted_topics.js", "static/js/settings_muted_users.js", "static/js/settings_notifications.js", "static/js/settings_org.js",