settings_config: Add generalize_stream_notification_setting table.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
(cherry picked from commit 5387e56da7)
This commit is contained in:
Anders Kaseorg
2022-08-25 12:09:32 -07:00
committed by Tim Abbott
parent 827ef3fef4
commit 0015d546f4
4 changed files with 18 additions and 12 deletions

View File

@@ -584,6 +584,17 @@ export const stream_notification_settings: (keyof StreamNotificationSettings)[]
"wildcard_mentions_notify", "wildcard_mentions_notify",
]; ];
export const generalize_stream_notification_setting: Record<
keyof StreamSpecificNotificationSettings,
keyof StreamNotificationSettings
> = {
desktop_notifications: "enable_stream_desktop_notifications",
audible_notifications: "enable_stream_audible_notifications",
push_notifications: "enable_stream_push_notifications",
email_notifications: "enable_stream_email_notifications",
wildcard_mentions_notify: "wildcard_mentions_notify",
};
export const pm_mention_notification_settings: (keyof PmNotificationSettings)[] = [ export const pm_mention_notification_settings: (keyof PmNotificationSettings)[] = [
"enable_desktop_notifications", "enable_desktop_notifications",
"enable_sounds", "enable_sounds",

View File

@@ -464,10 +464,7 @@ export function receives_notifications(stream_id, notification_name) {
if (sub[notification_name] !== null) { if (sub[notification_name] !== null) {
return sub[notification_name]; return sub[notification_name];
} }
if (notification_name === "wildcard_mentions_notify") { return user_settings[settings_config.generalize_stream_notification_setting[notification_name]];
return user_settings[notification_name];
}
return user_settings["enable_stream_" + notification_name];
} }
export function all_subscribed_streams_are_in_home_view() { export function all_subscribed_streams_are_in_home_view() {

View File

@@ -329,11 +329,8 @@ export function stream_setting_changed(e, from_notification_settings) {
return; return;
} }
if (is_notification_setting(setting) && sub[setting] === null) { if (is_notification_setting(setting) && sub[setting] === null) {
if (setting === "wildcard_mentions_notify") { sub[setting] =
sub[setting] = user_settings[setting]; user_settings[settings_config.generalize_stream_notification_setting[setting]];
} else {
sub[setting] = user_settings["enable_stream_" + setting];
}
} }
set_stream_property(sub, setting, e.target.checked, status_element); set_stream_property(sub, setting, e.target.checked, status_element);
} }

View File

@@ -60,9 +60,10 @@ export function get_unmatched_streams_for_notification_settings() {
const settings_values = {}; const settings_values = {};
let make_table_row = false; let make_table_row = false;
for (const notification_name of settings_config.stream_specific_notification_settings) { for (const notification_name of settings_config.stream_specific_notification_settings) {
const prepend = const default_setting =
notification_name === "wildcard_mentions_notify" ? "" : "enable_stream_"; user_settings[
const default_setting = user_settings[prepend + notification_name]; settings_config.generalize_stream_notification_setting[notification_name]
];
const stream_setting = stream_data.receives_notifications( const stream_setting = stream_data.receives_notifications(
row.stream_id, row.stream_id,
notification_name, notification_name,