mirror of
https://github.com/zulip/zulip.git
synced 2025-11-17 04:12:02 +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
|
// is passed. In this case, we articulate that with
|
||||||
// wildcard_mentions_notify being undefined, which will be
|
// wildcard_mentions_notify being undefined, which will be
|
||||||
// the case, if a wrong setting_name is passed.
|
// the case, if a wrong setting_name is passed.
|
||||||
assert.throws(settings_config.all_notifications, {
|
let error_message;
|
||||||
name: "TypeError",
|
let error_name;
|
||||||
message: "Incorrect setting_name passed: wildcard_mentions_notify",
|
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;
|
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, [
|
assert.deepEqual(notifications.general_settings, [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -100,13 +100,13 @@ export function build_page() {
|
|||||||
color_scheme_values: settings_config.color_scheme_values,
|
color_scheme_values: settings_config.color_scheme_values,
|
||||||
default_view_values: settings_config.default_view_values,
|
default_view_values: settings_config.default_view_values,
|
||||||
twenty_four_hour_time_values: settings_config.twenty_four_hour_time_values,
|
twenty_four_hour_time_values: settings_config.twenty_four_hour_time_values,
|
||||||
general_settings: settings_config.all_notifications().general_settings,
|
general_settings: settings_config.all_notifications(user_settings).general_settings,
|
||||||
notification_settings: settings_config.all_notifications().settings,
|
notification_settings: settings_config.all_notifications(user_settings).settings,
|
||||||
email_notifications_batching_period_values:
|
email_notifications_batching_period_values:
|
||||||
settings_config.email_notifications_batching_period_values,
|
settings_config.email_notifications_batching_period_values,
|
||||||
desktop_icon_count_display_values: settings_config.desktop_icon_count_display_values,
|
desktop_icon_count_display_values: settings_config.desktop_icon_count_display_values,
|
||||||
show_push_notifications_tooltip:
|
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(),
|
display_settings: settings_config.get_all_display_settings(),
|
||||||
user_can_change_name: settings_data.user_can_change_name(),
|
user_can_change_name: settings_data.user_can_change_name(),
|
||||||
user_can_change_avatar: settings_data.user_can_change_avatar(),
|
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 {$t, $t_html} from "./i18n";
|
||||||
import {page_params} from "./page_params";
|
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
|
This file contains translations between the integer values used in
|
||||||
@@ -404,7 +404,8 @@ export const stream_specific_notification_settings = [
|
|||||||
"wildcard_mentions_notify",
|
"wildcard_mentions_notify",
|
||||||
];
|
];
|
||||||
|
|
||||||
type PageParamsItem = keyof typeof user_settings;
|
type SettingsObjectType = UserSettingsType;
|
||||||
|
type PageParamsItem = keyof SettingsObjectType;
|
||||||
export const stream_notification_settings: PageParamsItem[] = [
|
export const stream_notification_settings: PageParamsItem[] = [
|
||||||
"enable_stream_desktop_notifications",
|
"enable_stream_desktop_notifications",
|
||||||
"enable_stream_audible_notifications",
|
"enable_stream_audible_notifications",
|
||||||
@@ -495,6 +496,7 @@ type NotificationSettingCheckbox = {
|
|||||||
|
|
||||||
export function get_notifications_table_row_data(
|
export function get_notifications_table_row_data(
|
||||||
notify_settings: PageParamsItem[],
|
notify_settings: PageParamsItem[],
|
||||||
|
settings_object: SettingsObjectType,
|
||||||
): NotificationSettingCheckbox[] {
|
): NotificationSettingCheckbox[] {
|
||||||
return general_notifications_table_labels.realm.map((column, index) => {
|
return general_notifications_table_labels.realm.map((column, index) => {
|
||||||
const setting_name = notify_settings[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") {
|
if (typeof checked !== "boolean") {
|
||||||
throw new TypeError(`Incorrect setting_name passed: ${setting_name}`);
|
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: [
|
general_settings: [
|
||||||
{
|
{
|
||||||
label: $t({defaultMessage: "Streams"}),
|
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"}),
|
label: $t({defaultMessage: "PMs, mentions, and alerts"}),
|
||||||
notification_settings: get_notifications_table_row_data(
|
notification_settings: get_notifications_table_row_data(
|
||||||
pm_mention_notification_settings,
|
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_edit from "./stream_edit";
|
||||||
import * as stream_settings_data from "./stream_settings_data";
|
import * as stream_settings_data from "./stream_settings_data";
|
||||||
import * as unread_ui from "./unread_ui";
|
import * as unread_ui from "./unread_ui";
|
||||||
|
import {user_settings} from "./user_settings";
|
||||||
|
|
||||||
function rerender_ui() {
|
function rerender_ui() {
|
||||||
const unmatched_streams_table = $("#stream-specific-notify-table");
|
const unmatched_streams_table = $("#stream-specific-notify-table");
|
||||||
@@ -31,7 +32,9 @@ function rerender_ui() {
|
|||||||
stream,
|
stream,
|
||||||
stream_specific_notification_settings:
|
stream_specific_notification_settings:
|
||||||
settings_config.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) {
|
export function stream_settings(sub) {
|
||||||
const settings_labels = settings_config.general_notifications_table_labels.stream;
|
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 settings = Object.keys(settings_labels).map((setting) => {
|
||||||
const ret = {
|
const ret = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
type UserSettingsType = {
|
export type UserSettingsType = {
|
||||||
color_scheme: number;
|
color_scheme: number;
|
||||||
default_language: string;
|
default_language: string;
|
||||||
default_view: string;
|
default_view: string;
|
||||||
|
|||||||
Reference in New Issue
Block a user