stream settings: Fix subscribers not showing on private stream creation.

Previously, stream subscribers were not rendering correctly. Due to
following reasons:
- Subscribers list didn't get initialized
- Subscriber members template add subscriber-list-table DOM element
  conditionally, which doesn't handle case if user have access to
  subscribers later.

Fix this by cleaning subscriber member template to hide the
elements, instead of conditionally adding DOM elements and
initialize subscribers list even if user can't access subscribers.
This commit is contained in:
YJDave
2018-03-11 19:35:59 +05:30
committed by Tim Abbott
parent 728cd04c4d
commit ff6d83b2f2
2 changed files with 24 additions and 33 deletions

View File

@@ -25,11 +25,7 @@ function get_email_of_subscribers(subscribers) {
exports.rerender_subscribers_list = function (sub) {
if (!sub.can_add_subscribers) {
// It is also possible that user don't have rights to access subscribers.
// If user can't add subscribers, user can't access subscribers.
var html = templates.render('subscription_members', sub);
var stream_settings = settings_for_sub(sub);
stream_settings.find('.subscription-members-setting').expectOne().html(html);
$(".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);
@@ -42,6 +38,7 @@ exports.rerender_subscribers_list = function (sub) {
subscribers_list.render();
ui.update_scrollbar($(".subscriber_list_container"));
}
$(".subscriber_list_settings_container").show();
}
};
@@ -164,7 +161,7 @@ function show_subscription_settings(sub_row) {
var color = stream_data.get_color(sub.name);
stream_color.set_colorpicker_color(colorpicker, color);
if (!sub.render_subscribers || !sub.can_add_subscribers) {
if (!sub.render_subscribers) {
return;
}
// fetch subscriber list from memory.

View File

@@ -1,32 +1,26 @@
{{#render_subscribers}}
<div class="subscriber_list_settings">
<div class="sub_settings_title float-left">
{{t "Stream membership" }}
<div class="stream_subscription_info small"></div>
</div>
<div class="subscriber_list_add float-right">
<form class="form-inline">
{{#if can_add_subscribers}}
<input type="text" class="search" placeholder="{{t 'Search subscribers' }}" />
<input type="text" name="principal" placeholder="{{t 'Email address' }}" value="" class="input-block" autocomplete="off" tabindex="-1" />
<button type="submit" name="add_subscriber" class="button add-subscriber-button small rounded" tabindex="-1 ">
{{t 'Add' }}
</button>
{{/if}}
</form>
</div>
<div class="clear-float"></div>
</div>
<div class="subscriber-list-box">
<div class="subscriber_list_container">
<div class="subscriber_list_loading_indicator"></div>
{{#if can_add_subscribers}}
<table class="subscriber-list"></table>
{{else}}
<div class="hide-subscriber-list">
{{t "This stream is private, so you can't see who is subscribed." }}
<div class="subscriber_list_settings_container" {{#unless can_add_subscribers}}style="display: none"{{/unless}}>
<div class="subscriber_list_settings">
<div class="sub_settings_title float-left">
{{t "Stream membership" }}
<div class="stream_subscription_info small"></div>
</div>
<div class="subscriber_list_add float-right">
<form class="form-inline">
<input type="text" class="search" placeholder="{{t 'Search subscribers' }}" />
<input type="text" name="principal" placeholder="{{t 'Email address' }}" value="" class="input-block" autocomplete="off" tabindex="-1" />
<button type="submit" name="add_subscriber" class="button add-subscriber-button small rounded" tabindex="-1 ">
{{t 'Add' }}
</button>
</form>
</div>
<div class="clear-float"></div>
</div>
<div class="subscriber-list-box">
<div class="subscriber_list_container">
<div class="subscriber_list_loading_indicator"></div>
<table class="subscriber-list"></table>
</div>
{{/if}}
</div>
</div>
{{/render_subscribers}}