streams: Show message retention policy details in subscription_type text.

This commit adds message retention policy details in the subscription_type
text below the stream description.

We do not show any text when realm-level settings is set to forever and
stream-level is set to either forever or realm_default.
This commit is contained in:
sahil839
2020-06-16 17:29:02 +05:30
committed by Tim Abbott
parent d9b7228444
commit 821e25ffb0
7 changed files with 36 additions and 3 deletions

View File

@@ -160,7 +160,7 @@ run_test('update_property', () => {
// Test stream message_retention_days change event // Test stream message_retention_days change event
with_overrides(function (override) { with_overrides(function (override) {
global.with_stub(function (stub) { global.with_stub(function (stub) {
override('stream_data.update_message_retention_setting', stub.f); override('subs.update_message_retention_setting', stub.f);
stream_events.update_property(1, 'message_retention_days', 20); stream_events.update_property(1, 'message_retention_days', 20);
const args = stub.get_args('sub', 'val'); const args = stub.get_args('sub', 'val');
assert.equal(args.sub.stream_id, 1); assert.equal(args.sub.stream_id, 1);

View File

@@ -63,6 +63,30 @@ exports.get_users_from_subscribers = function (subscribers) {
}); });
}; };
exports.get_retention_policy_text_for_subscription_type = function (sub) {
let message_retention_days = sub.message_retention_days;
// If both this stream and the organization-level policy are to retain forever,
// there's no need to comment on retention policies when describing the stream.
if ((page_params.realm_message_retention_days === -1 ||
page_params.realm_message_retention_days === null)
&& (sub.message_retention_days === null || sub.message_retention_days === -1)) {
return;
}
// Forever for this stream, overriding the organization default
if (sub.message_retention_days === -1) {
return i18n.t("Messages in this stream will be retained forever.");
}
// If we are deleting messages, even if it's the organization
// default, it's worth commenting on the policy.
if (message_retention_days === null) {
message_retention_days = page_params.realm_message_retention_days;
}
return i18n.t("Messages in this stream will be automatically deleted after __retention_days__ days.", {retention_days: message_retention_days});
};
exports.get_display_text_for_realm_message_retention_setting = function () { exports.get_display_text_for_realm_message_retention_setting = function () {
const realm_message_retention_days = page_params.realm_message_retention_days; const realm_message_retention_days = page_params.realm_message_retention_days;
if (realm_message_retention_days === -1 || realm_message_retention_days === null) { if (realm_message_retention_days === -1 || realm_message_retention_days === null) {
@@ -315,6 +339,7 @@ exports.show_settings_for = function (node) {
sub: sub, sub: sub,
settings: exports.stream_settings(sub), settings: exports.stream_settings(sub),
stream_post_policy_values: stream_data.stream_post_policy_values, stream_post_policy_values: stream_data.stream_post_policy_values,
message_retention_text: exports.get_retention_policy_text_for_subscription_type(sub),
}); });
ui.get_content_element($('.subscriptions .right .settings')).html(html); ui.get_content_element($('.subscriptions .right .settings')).html(html);

View File

@@ -56,7 +56,7 @@ exports.update_property = function (stream_id, property, value, other_values) {
subs.update_stream_post_policy(sub, value); subs.update_stream_post_policy(sub, value);
break; break;
case 'message_retention_days': case 'message_retention_days':
stream_data.update_message_retention_setting(sub, value); subs.update_message_retention_setting(sub, value);
break; break;
default: default:
blueslip.warn("Unexpected subscription property type", {property: property, blueslip.warn("Unexpected subscription property type", {property: property,

View File

@@ -146,6 +146,7 @@ exports.update_stream_subscription_type_text = function (sub) {
const template_data = { const template_data = {
...sub, ...sub,
stream_post_policy_values: stream_data.stream_post_policy_values, stream_post_policy_values: stream_data.stream_post_policy_values,
message_retention_text: stream_edit.get_retention_policy_text_for_subscription_type(sub),
}; };
const html = render_subscription_type(template_data); const html = render_subscription_type(template_data);
if (stream_edit.is_sub_settings_active(sub)) { if (stream_edit.is_sub_settings_active(sub)) {

View File

@@ -192,6 +192,11 @@ exports.update_stream_post_policy = function (sub, new_value) {
stream_ui_updates.update_stream_subscription_type_text(sub); stream_ui_updates.update_stream_subscription_type_text(sub);
}; };
exports.update_message_retention_setting = function (sub, new_value) {
stream_data.update_message_retention_setting(sub, new_value);
stream_ui_updates.update_stream_subscription_type_text(sub);
};
exports.set_color = function (stream_id, color) { exports.set_color = function (stream_id, color) {
const sub = stream_data.get_sub_by_id(stream_id); const sub = stream_data.get_sub_by_id(stream_id);
stream_edit.set_stream_property(sub, 'color', color); stream_edit.set_stream_property(sub, 'color', color);

View File

@@ -35,7 +35,8 @@
<div class="subscription-type"> <div class="subscription-type">
<div class="subscription-type-text"> <div class="subscription-type-text">
{{> subscription_type {{> subscription_type
stream_post_policy_values=../stream_post_policy_values}} stream_post_policy_values=../stream_post_policy_values
message_retention_text=../message_retention_text}}
</div> </div>
<a class="change-stream-privacy" {{#unless can_change_stream_permissions}}style="display: none;"{{/unless}}>[{{t "Change" }}]</a> <a class="change-stream-privacy" {{#unless can_change_stream_permissions}}style="display: none;"{{/unless}}>[{{t "Change" }}]</a>
</div> </div>

View File

@@ -15,3 +15,4 @@
{{else}} {{else}}
{{t 'All stream members can post.'}} {{t 'All stream members can post.'}}
{{/if}} {{/if}}
{{message_retention_text}}