From d41f66a917d4b01cd3601d2e4b74d4aa3cdca5f5 Mon Sep 17 00:00:00 2001 From: sahil839 Date: Sun, 12 Jul 2020 03:43:47 +0530 Subject: [PATCH] muted_topics: Rerender list only if modal is opened and section is loaded. We should rernder the muted topics list in settings only if the settings modal is opened and the muted topics section is loaded. --- frontend_tests/node_tests/settings_muting.js | 8 ++++++++ static/js/muting_ui.js | 4 +++- static/js/settings_muting.js | 7 +++++++ static/js/settings_sections.js | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/frontend_tests/node_tests/settings_muting.js b/frontend_tests/node_tests/settings_muting.js index b1f6bf0128..1eb172c042 100644 --- a/frontend_tests/node_tests/settings_muting.js +++ b/frontend_tests/node_tests/settings_muting.js @@ -32,7 +32,10 @@ run_test('settings', () => { set_up_ui_called = true; }; + assert.equal(settings_muting.loaded, false); + settings_muting.set_up(); + assert.equal(settings_muting.loaded, true); const click_handler = $('body').get_on_handler('click', '.settings-unmute-topic'); assert.equal(typeof click_handler, 'function'); @@ -71,3 +74,8 @@ run_test('settings', () => { assert(set_up_ui_called); assert.equal(data_called, 2); }); + +run_test('reset', () => { + settings_muting.reset(); + assert.equal(settings_muting.loaded, false); +}); diff --git a/static/js/muting_ui.js b/static/js/muting_ui.js index d1daccfd65..6eabf500ea 100644 --- a/static/js/muting_ui.js +++ b/static/js/muting_ui.js @@ -20,7 +20,9 @@ exports.rerender = function () { if (current_msg_list !== home_msg_list) { home_msg_list.update_muting_and_rerender(); } - exports.set_up_muted_topics_ui(); + if (overlays.settings_open() && settings_muting.loaded) { + exports.set_up_muted_topics_ui(); + } }; exports.persist_mute = function (stream_id, topic_name) { diff --git a/static/js/settings_muting.js b/static/js/settings_muting.js index 2f541583e6..4d1dcc12a3 100644 --- a/static/js/settings_muting.js +++ b/static/js/settings_muting.js @@ -1,4 +1,7 @@ +exports.loaded = false; + exports.set_up = function () { + exports.loaded = true; $('body').on('click', '.settings-unmute-topic', function (e) { const $row = $(this).closest("tr"); const stream_id = parseInt($row.attr("data-stream-id"), 10); @@ -13,4 +16,8 @@ exports.set_up = function () { muting_ui.set_up_muted_topics_ui(); }; +exports.reset = function () { + exports.loaded = false; +}; + window.settings_muting = exports; diff --git a/static/js/settings_sections.js b/static/js/settings_sections.js index f451b67042..0fedea420b 100644 --- a/static/js/settings_sections.js +++ b/static/js/settings_sections.js @@ -77,6 +77,7 @@ exports.reset_sections = function () { settings_profile_fields.reset(); settings_streams.reset(); settings_user_groups.reset(); + settings_muting.reset(); // settings_users doesn't need a reset() };