mirror of
https://github.com/zulip/zulip.git
synced 2026-06-24 21:08:25 +08:00
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:
parent
ae43ef5959
commit
f3604fbb1e
@ -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,
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user