diff --git a/web/src/realm_user_settings_defaults.ts b/web/src/realm_user_settings_defaults.ts index 3347a75b02..d6e180e91f 100644 --- a/web/src/realm_user_settings_defaults.ts +++ b/web/src/realm_user_settings_defaults.ts @@ -1,59 +1,64 @@ -export type RealmDefaultSettings = { - automatically_follow_topics_policy: number; - automatically_follow_topics_where_mentioned: boolean; - automatically_unmute_topics_in_muted_streams_policy: number; - color_scheme: number; - default_language: string; - demote_inactive_streams: number; - dense_mode: boolean; - desktop_icon_count_display: number; - display_emoji_reaction_users: boolean; - email_notifications_batching_period_seconds: number; - emojiset: string; - enable_desktop_notifications: boolean; - enable_digest_emails: boolean; - enable_drafts_synchronization: boolean; - enable_followed_topic_audible_notifications: boolean; - enable_followed_topic_desktop_notifications: boolean; - enable_followed_topic_email_notifications: boolean; - enable_followed_topic_push_notifications: boolean; - enable_followed_topic_wildcard_mentions_notify: boolean; - enable_login_emails: boolean; - enable_marketing_emails: boolean; - enable_offline_email_notifications: boolean; - enable_offline_push_notifications: boolean; - enable_online_push_notifications: boolean; - enable_sounds: boolean; - enable_stream_audible_notifications: boolean; - enable_stream_desktop_notifications: boolean; - enable_stream_email_notifications: boolean; - enable_stream_push_notifications: boolean; - enter_sends: boolean; - fluid_layout_width: boolean; - high_contrast_mode: boolean; - message_content_in_email_notifications: boolean; - notification_sound: string; - pm_content_in_desktop_notifications: boolean; - presence_enabled: boolean; - realm_name_in_email_notifications_policy: number; - receives_typing_notifications: boolean; - send_private_typing_notifications: boolean; - send_stream_typing_notifications: boolean; - starred_message_counts: boolean; - translate_emoticons: boolean; - twenty_four_hour_time: boolean; - user_list_style: number; - web_escape_navigates_to_home_view: boolean; - web_font_size_px: number; - web_home_view: string; - web_line_height_percent: number; - web_mark_read_on_scroll_policy: number; - web_stream_unreads_count_display_policy: number; - wildcard_mentions_notify: boolean; -}; +import {z} from "zod"; + +import type {StateData} from "./state_data"; + +export const realm_default_settings_schema = z.object({ + automatically_follow_topics_policy: z.number(), + automatically_follow_topics_where_mentioned: z.boolean(), + automatically_unmute_topics_in_muted_streams_policy: z.number(), + color_scheme: z.number(), + default_language: z.string(), + demote_inactive_streams: z.number(), + dense_mode: z.boolean(), + desktop_icon_count_display: z.number(), + display_emoji_reaction_users: z.boolean(), + email_notifications_batching_period_seconds: z.number(), + emojiset: z.string(), + enable_desktop_notifications: z.boolean(), + enable_digest_emails: z.boolean(), + enable_drafts_synchronization: z.boolean(), + enable_followed_topic_audible_notifications: z.boolean(), + enable_followed_topic_desktop_notifications: z.boolean(), + enable_followed_topic_email_notifications: z.boolean(), + enable_followed_topic_push_notifications: z.boolean(), + enable_followed_topic_wildcard_mentions_notify: z.boolean(), + enable_login_emails: z.boolean(), + enable_marketing_emails: z.boolean(), + enable_offline_email_notifications: z.boolean(), + enable_offline_push_notifications: z.boolean(), + enable_online_push_notifications: z.boolean(), + enable_sounds: z.boolean(), + enable_stream_audible_notifications: z.boolean(), + enable_stream_desktop_notifications: z.boolean(), + enable_stream_email_notifications: z.boolean(), + enable_stream_push_notifications: z.boolean(), + enter_sends: z.boolean(), + fluid_layout_width: z.boolean(), + high_contrast_mode: z.boolean(), + message_content_in_email_notifications: z.boolean(), + notification_sound: z.string(), + pm_content_in_desktop_notifications: z.boolean(), + presence_enabled: z.boolean(), + realm_name_in_email_notifications_policy: z.number(), + receives_typing_notifications: z.boolean(), + send_private_typing_notifications: z.boolean(), + send_stream_typing_notifications: z.boolean(), + starred_message_counts: z.boolean(), + translate_emoticons: z.boolean(), + twenty_four_hour_time: z.boolean(), + user_list_style: z.number(), + web_escape_navigates_to_home_view: z.boolean(), + web_font_size_px: z.number(), + web_home_view: z.string(), + web_line_height_percent: z.number(), + web_mark_read_on_scroll_policy: z.number(), + web_stream_unreads_count_display_policy: z.number(), + wildcard_mentions_notify: z.boolean(), +}); +export type RealmDefaultSettings = z.infer; export let realm_user_settings_defaults: RealmDefaultSettings; -export function initialize(params: {realm_user_settings_defaults: RealmDefaultSettings}): void { +export function initialize(params: StateData["realm_settings_defaults"]): void { realm_user_settings_defaults = params.realm_user_settings_defaults; } diff --git a/web/src/state_data.ts b/web/src/state_data.ts index 00477f5506..aaede7e780 100644 --- a/web/src/state_data.ts +++ b/web/src/state_data.ts @@ -1,5 +1,6 @@ import {z} from "zod"; +import {realm_default_settings_schema} from "./realm_user_settings_defaults"; import {user_settings_schema} from "./user_settings"; const NOT_TYPED_YET = z.unknown(); @@ -312,7 +313,7 @@ export const state_data_schema = z ) .and( z - .object({realm_user_settings_defaults: NOT_TYPED_YET}) + .object({realm_user_settings_defaults: realm_default_settings_schema}) .transform((realm_settings_defaults) => ({realm_settings_defaults})), ) .and(