mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 21:13:36 +00:00
settings_config: Pass settings object as parameter to all_notifications.
We pass user_settings object to all_notifications and get_notifications_table_row_data such that we can use these functions for realm-level settings also.
This commit is contained in:
@@ -22,13 +22,19 @@ run_test("all_notifications", () => {
|
||||
// is passed. In this case, we articulate that with
|
||||
// wildcard_mentions_notify being undefined, which will be
|
||||
// the case, if a wrong setting_name is passed.
|
||||
assert.throws(settings_config.all_notifications, {
|
||||
name: "TypeError",
|
||||
message: "Incorrect setting_name passed: wildcard_mentions_notify",
|
||||
});
|
||||
let error_message;
|
||||
let error_name;
|
||||
try {
|
||||
settings_config.all_notifications(user_settings);
|
||||
} catch (error) {
|
||||
error_name = error.name;
|
||||
error_message = error.message;
|
||||
}
|
||||
assert.equal(error_name, "TypeError");
|
||||
assert.equal(error_message, "Incorrect setting_name passed: wildcard_mentions_notify");
|
||||
|
||||
user_settings.wildcard_mentions_notify = false;
|
||||
const notifications = settings_config.all_notifications();
|
||||
const notifications = settings_config.all_notifications(user_settings);
|
||||
|
||||
assert.deepEqual(notifications.general_settings, [
|
||||
{
|
||||
|
||||
@@ -100,13 +100,13 @@ export function build_page() {
|
||||
color_scheme_values: settings_config.color_scheme_values,
|
||||
default_view_values: settings_config.default_view_values,
|
||||
twenty_four_hour_time_values: settings_config.twenty_four_hour_time_values,
|
||||
general_settings: settings_config.all_notifications().general_settings,
|
||||
notification_settings: settings_config.all_notifications().settings,
|
||||
general_settings: settings_config.all_notifications(user_settings).general_settings,
|
||||
notification_settings: settings_config.all_notifications(user_settings).settings,
|
||||
email_notifications_batching_period_values:
|
||||
settings_config.email_notifications_batching_period_values,
|
||||
desktop_icon_count_display_values: settings_config.desktop_icon_count_display_values,
|
||||
show_push_notifications_tooltip:
|
||||
settings_config.all_notifications().show_push_notifications_tooltip,
|
||||
settings_config.all_notifications(user_settings).show_push_notifications_tooltip,
|
||||
display_settings: settings_config.get_all_display_settings(),
|
||||
user_can_change_name: settings_data.user_can_change_name(),
|
||||
user_can_change_avatar: settings_data.user_can_change_avatar(),
|
||||
|
||||
@@ -2,7 +2,7 @@ import Handlebars from "handlebars/runtime";
|
||||
|
||||
import {$t, $t_html} from "./i18n";
|
||||
import {page_params} from "./page_params";
|
||||
import {user_settings} from "./user_settings";
|
||||
import type {UserSettingsType} from "./user_settings";
|
||||
|
||||
/*
|
||||
This file contains translations between the integer values used in
|
||||
@@ -404,7 +404,8 @@ export const stream_specific_notification_settings = [
|
||||
"wildcard_mentions_notify",
|
||||
];
|
||||
|
||||
type PageParamsItem = keyof typeof user_settings;
|
||||
type SettingsObjectType = UserSettingsType;
|
||||
type PageParamsItem = keyof SettingsObjectType;
|
||||
export const stream_notification_settings: PageParamsItem[] = [
|
||||
"enable_stream_desktop_notifications",
|
||||
"enable_stream_audible_notifications",
|
||||
@@ -495,6 +496,7 @@ type NotificationSettingCheckbox = {
|
||||
|
||||
export function get_notifications_table_row_data(
|
||||
notify_settings: PageParamsItem[],
|
||||
settings_object: SettingsObjectType,
|
||||
): NotificationSettingCheckbox[] {
|
||||
return general_notifications_table_labels.realm.map((column, index) => {
|
||||
const setting_name = notify_settings[index];
|
||||
@@ -506,7 +508,7 @@ export function get_notifications_table_row_data(
|
||||
};
|
||||
}
|
||||
|
||||
const checked = user_settings[setting_name];
|
||||
const checked = settings_object[setting_name];
|
||||
if (typeof checked !== "boolean") {
|
||||
throw new TypeError(`Incorrect setting_name passed: ${setting_name}`);
|
||||
}
|
||||
@@ -537,16 +539,20 @@ export interface AllNotifications {
|
||||
};
|
||||
}
|
||||
|
||||
export const all_notifications = (): AllNotifications => ({
|
||||
export const all_notifications = (settings_object: SettingsObjectType): AllNotifications => ({
|
||||
general_settings: [
|
||||
{
|
||||
label: $t({defaultMessage: "Streams"}),
|
||||
notification_settings: get_notifications_table_row_data(stream_notification_settings),
|
||||
notification_settings: get_notifications_table_row_data(
|
||||
stream_notification_settings,
|
||||
settings_object,
|
||||
),
|
||||
},
|
||||
{
|
||||
label: $t({defaultMessage: "PMs, mentions, and alerts"}),
|
||||
notification_settings: get_notifications_table_row_data(
|
||||
pm_mention_notification_settings,
|
||||
settings_object,
|
||||
),
|
||||
},
|
||||
],
|
||||
|
||||
@@ -12,6 +12,7 @@ import * as settings_ui from "./settings_ui";
|
||||
import * as stream_edit from "./stream_edit";
|
||||
import * as stream_settings_data from "./stream_settings_data";
|
||||
import * as unread_ui from "./unread_ui";
|
||||
import {user_settings} from "./user_settings";
|
||||
|
||||
function rerender_ui() {
|
||||
const unmatched_streams_table = $("#stream-specific-notify-table");
|
||||
@@ -31,7 +32,9 @@ function rerender_ui() {
|
||||
stream,
|
||||
stream_specific_notification_settings:
|
||||
settings_config.stream_specific_notification_settings,
|
||||
is_disabled: settings_config.all_notifications().show_push_notifications_tooltip,
|
||||
is_disabled:
|
||||
settings_config.all_notifications(user_settings)
|
||||
.show_push_notifications_tooltip,
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -485,7 +485,8 @@ export function is_notification_setting(setting_label) {
|
||||
|
||||
export function stream_settings(sub) {
|
||||
const settings_labels = settings_config.general_notifications_table_labels.stream;
|
||||
const check_realm_setting = settings_config.all_notifications().show_push_notifications_tooltip;
|
||||
const check_realm_setting =
|
||||
settings_config.all_notifications(user_settings).show_push_notifications_tooltip;
|
||||
|
||||
const settings = Object.keys(settings_labels).map((setting) => {
|
||||
const ret = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
type UserSettingsType = {
|
||||
export type UserSettingsType = {
|
||||
color_scheme: number;
|
||||
default_language: string;
|
||||
default_view: string;
|
||||
|
||||
Reference in New Issue
Block a user