diff --git a/static/js/stream_edit.js b/static/js/stream_edit.js index c59509e000..3ff703d386 100644 --- a/static/js/stream_edit.js +++ b/static/js/stream_edit.js @@ -34,33 +34,13 @@ exports.is_sub_settings_active = function (sub) { return false; }; -function get_email_of_subscribers(subscribers) { +exports.get_email_of_subscribers = function (subscribers) { var emails = []; subscribers.each(function (o, i) { var email = people.get_person_from_user_id(i).email; emails.push(email); }); return emails; -} - -exports.rerender_subscribers_list = function (sub) { - if (!sub.can_access_subscribers) { - $(".subscriber_list_settings_container").hide(); - } else { - var emails = get_email_of_subscribers(sub.subscribers); - var subscribers_list = list_render.get("stream_subscribers/" + sub.stream_id); - - // Changing the data clears the rendered list and the list needs to be re-rendered. - // Perform re-rendering only when the stream settings form of the corresponding - // stream is open. - if (subscribers_list) { - exports.sort_but_pin_current_user_on_top(emails); - subscribers_list.data(emails); - subscribers_list.render(); - ui.update_scrollbar($(".subscriber_list_container")); - } - $(".subscriber_list_settings_container").show(); - } }; function clear_edit_panel() { @@ -188,7 +168,7 @@ function show_subscription_settings(sub_row) { var list = get_subscriber_list(sub_settings); list.empty(); - var emails = get_email_of_subscribers(sub.subscribers); + var emails = exports.get_email_of_subscribers(sub.subscribers); exports.sort_but_pin_current_user_on_top(emails); list_render.create(list, emails, { diff --git a/static/js/stream_ui_updates.js b/static/js/stream_ui_updates.js index d9d86b5f69..d6ebee099b 100644 --- a/static/js/stream_ui_updates.js +++ b/static/js/stream_ui_updates.js @@ -111,6 +111,31 @@ exports.update_subscribers_count = function (sub, just_subscribed) { } }; +exports.update_subscribers_list = function (sub) { + // Render subscriptions only if stream settings is open + if (!stream_edit.is_sub_settings_active(sub)) { + return; + } + + if (!sub.can_access_subscribers) { + $(".subscriber_list_settings_container").hide(); + } else { + var emails = stream_edit.get_email_of_subscribers(sub.subscribers); + var subscribers_list = list_render.get("stream_subscribers/" + sub.stream_id); + + // Changing the data clears the rendered list and the list needs to be re-rendered. + // Perform re-rendering only when the stream settings form of the corresponding + // stream is open. + if (subscribers_list) { + stream_edit.sort_but_pin_current_user_on_top(emails); + subscribers_list.data(emails); + subscribers_list.render(); + ui.update_scrollbar($(".subscriber_list_container")); + } + $(".subscriber_list_settings_container").show(); + } +}; + return exports; }()); diff --git a/static/js/subs.js b/static/js/subs.js index 7aeba31a28..9721410a33 100644 --- a/static/js/subs.js +++ b/static/js/subs.js @@ -171,10 +171,7 @@ exports.rerender_subscriptions_settings = function (sub) { } stream_data.update_subscribers_count(sub); stream_ui_updates.update_subscribers_count(sub); - if (stream_edit.is_sub_settings_active(sub)) { - // Render subscriptions only if stream settings is open - stream_edit.rerender_subscribers_list(sub); - } + stream_ui_updates.update_subscribers_list(sub); }; function add_email_hint_handler() { @@ -267,9 +264,7 @@ exports.update_settings_for_subscribed = function (sub) { exports.add_sub_to_table(sub); } - if (stream_edit.is_sub_settings_active(sub)) { - stream_edit.rerender_subscribers_list(sub); - } + stream_ui_updates.update_subscribers_list(sub); // Display the swatch and subscription stream_settings stream_ui_updates.update_regular_sub_settings(sub);