mirror of
https://github.com/zulip/zulip.git
synced 2026-07-09 21:21:47 +08:00
This field tracks whether the user should be shown an alert offering to update their profile time zone to the time zone of the browser in case they differ. The field is added to RealmUserDefault and UserProfile models with a default value of True. Fixes part of #16957
93 lines
4.0 KiB
TypeScript
93 lines
4.0 KiB
TypeScript
import {z} from "zod";
|
|
|
|
import type {StateData} from "./state_data.ts";
|
|
|
|
export const stream_notification_settings_schema = z.object({
|
|
enable_stream_audible_notifications: z.boolean(),
|
|
enable_stream_desktop_notifications: z.boolean(),
|
|
enable_stream_email_notifications: z.boolean(),
|
|
enable_stream_push_notifications: z.boolean(),
|
|
wildcard_mentions_notify: z.boolean(),
|
|
});
|
|
export type StreamNotificationSettings = z.infer<typeof stream_notification_settings_schema>;
|
|
|
|
export const pm_notification_settings_schema = z.object({
|
|
enable_desktop_notifications: z.boolean(),
|
|
enable_offline_email_notifications: z.boolean(),
|
|
enable_offline_push_notifications: z.boolean(),
|
|
enable_sounds: z.boolean(),
|
|
});
|
|
export type PmNotificationSettings = z.infer<typeof pm_notification_settings_schema>;
|
|
|
|
export const followed_topic_notification_settings_schema = z.object({
|
|
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(),
|
|
});
|
|
export type FollowedTopicNotificationSettings = z.infer<
|
|
typeof followed_topic_notification_settings_schema
|
|
>;
|
|
|
|
export const user_settings_schema = stream_notification_settings_schema
|
|
.merge(pm_notification_settings_schema)
|
|
.merge(followed_topic_notification_settings_schema)
|
|
.extend({
|
|
allow_private_data_export: z.boolean(),
|
|
automatically_follow_topics_policy: z.number(),
|
|
automatically_follow_topics_where_mentioned: z.boolean(),
|
|
automatically_unmute_topics_in_muted_streams_policy: z.number(),
|
|
available_notification_sounds: z.array(z.string()),
|
|
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_address_visibility: z.number(),
|
|
email_notifications_batching_period_seconds: z.number(),
|
|
emojiset: z.string(),
|
|
emojiset_choices: z.array(z.object({key: z.string(), text: z.string()})),
|
|
enable_digest_emails: z.boolean(),
|
|
enable_drafts_synchronization: z.boolean(),
|
|
enable_login_emails: z.boolean(),
|
|
enable_marketing_emails: z.boolean(),
|
|
enable_online_push_notifications: z.boolean(),
|
|
enter_sends: z.boolean(),
|
|
fluid_layout_width: z.boolean(),
|
|
high_contrast_mode: z.boolean(),
|
|
left_side_userlist: 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_read_receipts: z.boolean(),
|
|
send_stream_typing_notifications: z.boolean(),
|
|
starred_message_counts: z.boolean(),
|
|
timezone: z.string(),
|
|
translate_emoticons: z.boolean(),
|
|
twenty_four_hour_time: z.boolean(),
|
|
user_list_style: z.number(),
|
|
web_animate_image_previews: z.enum(["always", "on_hover", "never"]),
|
|
web_channel_default_view: z.number(),
|
|
web_escape_navigates_to_home_view: z.boolean(),
|
|
web_font_size_px: z.number(),
|
|
web_home_view: z.enum(["inbox", "recent_topics", "all_messages"]),
|
|
web_line_height_percent: z.number(),
|
|
web_mark_read_on_scroll_policy: z.number(),
|
|
web_navigate_to_sent_message: z.boolean(),
|
|
web_stream_unreads_count_display_policy: z.number(),
|
|
web_suggest_update_timezone: z.boolean(),
|
|
});
|
|
export type UserSettings = z.infer<typeof user_settings_schema>;
|
|
|
|
export let user_settings: UserSettings;
|
|
|
|
export function initialize_user_settings(params: StateData["user_settings"]): void {
|
|
user_settings = params.user_settings;
|
|
}
|