stream_edit: Refactor receives_notifications to use stream ids.

This commit changes receives_notifications function to use
stream_ids instead of stream names. We are using stream ids so
that we can avoid bugs related to live update after stream rename.
This commit is contained in:
sahil839 2020-06-20 01:38:34 +05:30 committed by Tim Abbott
parent ae43ef5959
commit f3604fbb1e
4 changed files with 30 additions and 30 deletions

View File

@ -645,60 +645,60 @@ run_test('notifications', () => {
stream_data.clear_subscriptions();
stream_data.add_sub(india);
assert(!stream_data.receives_notifications('Indiana', "desktop_notifications"));
assert(!stream_data.receives_notifications('Indiana', "audible_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "desktop_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "audible_notifications"));
page_params.enable_stream_desktop_notifications = true;
page_params.enable_stream_audible_notifications = true;
assert(stream_data.receives_notifications('India', "desktop_notifications"));
assert(stream_data.receives_notifications('India', "audible_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "desktop_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "audible_notifications"));
page_params.enable_stream_desktop_notifications = false;
page_params.enable_stream_audible_notifications = false;
assert(!stream_data.receives_notifications('India', "desktop_notifications"));
assert(!stream_data.receives_notifications('India', "audible_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "desktop_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "audible_notifications"));
india.desktop_notifications = true;
india.audible_notifications = true;
assert(stream_data.receives_notifications('India', "desktop_notifications"));
assert(stream_data.receives_notifications('India', "audible_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "desktop_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "audible_notifications"));
india.desktop_notifications = false;
india.audible_notifications = false;
page_params.enable_stream_desktop_notifications = true;
page_params.enable_stream_audible_notifications = true;
assert(!stream_data.receives_notifications('India', "desktop_notifications"));
assert(!stream_data.receives_notifications('India', "audible_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "desktop_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "audible_notifications"));
page_params.wildcard_mentions_notify = true;
assert(stream_data.receives_notifications('India', "wildcard_mentions_notify"));
assert(stream_data.receives_notifications(india.stream_id, "wildcard_mentions_notify"));
page_params.wildcard_mentions_notify = false;
assert(!stream_data.receives_notifications('India', "wildcard_mentions_notify"));
assert(!stream_data.receives_notifications(india.stream_id, "wildcard_mentions_notify"));
india.wildcard_mentions_notify = true;
assert(stream_data.receives_notifications('India', "wildcard_mentions_notify"));
assert(stream_data.receives_notifications(india.stream_id, "wildcard_mentions_notify"));
page_params.wildcard_mentions_notify = true;
india.wildcard_mentions_notify = false;
assert(!stream_data.receives_notifications('India', "wildcard_mentions_notify"));
assert(!stream_data.receives_notifications(india.stream_id, "wildcard_mentions_notify"));
page_params.enable_stream_push_notifications = true;
assert(stream_data.receives_notifications('India', "push_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "push_notifications"));
page_params.enable_stream_push_notifications = false;
assert(!stream_data.receives_notifications('India', "push_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "push_notifications"));
india.push_notifications = true;
assert(stream_data.receives_notifications('India', "push_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "push_notifications"));
page_params.enable_stream_push_notifications = true;
india.push_notifications = false;
assert(!stream_data.receives_notifications('India', "push_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "push_notifications"));
page_params.enable_stream_email_notifications = true;
assert(stream_data.receives_notifications('India', "email_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "email_notifications"));
page_params.enable_stream_email_notifications = false;
assert(!stream_data.receives_notifications('India', "email_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "email_notifications"));
india.email_notifications = true;
assert(stream_data.receives_notifications('India', "email_notifications"));
assert(stream_data.receives_notifications(india.stream_id, "email_notifications"));
page_params.enable_stream_email_notifications = true;
india.email_notifications = false;
assert(!stream_data.receives_notifications('India', "email_notifications"));
assert(!stream_data.receives_notifications(india.stream_id, "email_notifications"));
const canada = {
stream_id: 103,

View File

@ -467,7 +467,7 @@ exports.should_send_desktop_notification = function (message) {
// For streams, send if desktop notifications are enabled for all
// message on this stream.
if (message.type === "stream" &&
stream_data.receives_notifications(message.stream, "desktop_notifications")) {
stream_data.receives_notifications(message.stream_id, "desktop_notifications")) {
return true;
}
@ -493,7 +493,7 @@ exports.should_send_desktop_notification = function (message) {
// wildcard mentions
if (message.mentioned &&
stream_data.receives_notifications(message.stream, "wildcard_mentions_notify")) {
stream_data.receives_notifications(message.stream_id, "wildcard_mentions_notify")) {
return true;
}
@ -504,7 +504,7 @@ exports.should_send_audible_notification = function (message) {
// For streams, ding if sounds are enabled for all messages on
// this stream.
if (message.type === "stream" &&
stream_data.receives_notifications(message.stream, "audible_notifications")) {
stream_data.receives_notifications(message.stream_id, "audible_notifications")) {
return true;
}
@ -529,7 +529,7 @@ exports.should_send_audible_notification = function (message) {
// wildcard mentions
if (message.mentioned &&
stream_data.receives_notifications(message.stream, "wildcard_mentions_notify")) {
stream_data.receives_notifications(message.stream_id, "wildcard_mentions_notify")) {
return true;
}

View File

@ -431,8 +431,8 @@ exports.update_message_retention_setting = function (sub, message_retention_day
sub.message_retention_days = message_retention_days;
};
exports.receives_notifications = function (stream_name, notification_name) {
const sub = exports.get_sub(stream_name);
exports.receives_notifications = function (stream_id, notification_name) {
const sub = exports.get_sub_by_id(stream_id);
if (sub === undefined) {
return false;
}
@ -753,7 +753,7 @@ exports.get_unmatched_streams_for_notification_settings = function () {
for (const notification_name of settings_config.stream_specific_notification_settings) {
const prepend = notification_name === 'wildcard_mentions_notify' ? "" : "enable_stream_";
const default_setting = page_params[prepend + notification_name];
const stream_setting = exports.receives_notifications(row.name, notification_name);
const stream_setting = exports.receives_notifications(row.stream_id, notification_name);
settings_values[notification_name] = stream_setting;
if (stream_setting !== default_setting) {

View File

@ -103,7 +103,7 @@ exports.update_notification_setting_checkbox = function (notification_name) {
}
const stream_id = stream_row.data('stream-id');
$(`#${notification_name}_${stream_id}`).prop("checked", stream_data.receives_notifications(
stream_data.maybe_get_stream_name(stream_id), notification_name));
stream_id, notification_name));
};
exports.update_stream_row_in_settings_tab = function (sub) {