ts: Convert settings_data module to TypeScript.

This commit is contained in:
Priyank Patel
2021-07-28 16:55:53 +00:00
committed by Tim Abbott
parent 6b93fe0cd7
commit 1711dcbc6f
2 changed files with 51 additions and 20 deletions

View File

@@ -2,6 +2,7 @@ import $ from "jquery";
const t1 = performance.now(); const t1 = performance.now();
export const page_params: { export const page_params: {
color_scheme: number;
enable_desktop_notifications: boolean; enable_desktop_notifications: boolean;
enable_offline_email_notifications: boolean; enable_offline_email_notifications: boolean;
enable_offline_push_notifications: boolean; enable_offline_push_notifications: boolean;
@@ -17,10 +18,29 @@ export const page_params: {
percent_translated: number | undefined; percent_translated: number | undefined;
}[]; }[];
development_environment: boolean; development_environment: boolean;
is_admin: boolean;
is_guest: boolean;
is_moderator: boolean;
is_spectator: boolean;
realm_add_custom_emoji_policy: number;
realm_avatar_changes_disabled: boolean;
realm_create_stream_policy: number;
realm_edit_topic_policy: number;
realm_email_address_visibility: number;
realm_invite_to_realm_policy: number;
realm_invite_to_stream_policy: number;
realm_move_messages_between_streams_policy: number;
realm_name_changes_disabled: boolean;
realm_push_notifications_enabled: boolean; realm_push_notifications_enabled: boolean;
realm_user_group_edit_policy: number;
realm_waiting_period_threshold: number;
request_language: string; request_language: string;
server_avatar_changes_disabled: boolean;
server_name_changes_disabled: boolean;
translation_data: Record<string, string>; translation_data: Record<string, string>;
twenty_four_hour_time: boolean;
wildcard_mentions_notify: boolean; wildcard_mentions_notify: boolean;
zulip_plan_is_not_limited: boolean;
} = $("#page-params").remove().data("params"); } = $("#page-params").remove().data("params");
const t2 = performance.now(); const t2 = performance.now();
export const page_params_parse_time = t2 - t1; export const page_params_parse_time = t2 - t1;

View File

@@ -1,8 +1,8 @@
import {page_params} from "./page_params"; import {page_params} from "./page_params";
import * as settings_config from "./settings_config"; import * as settings_config from "./settings_config";
let user_join_date; let user_join_date: Date;
export function initialize(current_user_join_date) { export function initialize(current_user_join_date: Date): void {
// We keep the `user_join_date` as the present day's date if the user is a spectator // We keep the `user_join_date` as the present day's date if the user is a spectator
user_join_date = current_user_join_date; user_join_date = current_user_join_date;
} }
@@ -17,7 +17,7 @@ export function initialize(current_user_join_date) {
about page_params and settings_config details. about page_params and settings_config details.
*/ */
function user_can_access_delivery_email() { function user_can_access_delivery_email(): boolean {
// This function checks whether the current user should expect to // This function checks whether the current user should expect to
// see .delivery_email fields on user objects that it can access. // see .delivery_email fields on user objects that it can access.
// //
@@ -42,7 +42,7 @@ function user_can_access_delivery_email() {
return false; return false;
} }
export function show_email() { export function show_email(): boolean {
if ( if (
page_params.realm_email_address_visibility === page_params.realm_email_address_visibility ===
settings_config.email_address_visibility_values.everyone.code settings_config.email_address_visibility_values.everyone.code
@@ -52,7 +52,14 @@ export function show_email() {
return user_can_access_delivery_email(); return user_can_access_delivery_email();
} }
export function email_for_user_settings(person) { // TODO: Move this to people when converting it
// to TypeScript.
interface Person {
delivery_email: string;
email: string;
}
export function email_for_user_settings(person: Person): string | undefined {
if (!show_email()) { if (!show_email()) {
return undefined; return undefined;
} }
@@ -64,7 +71,10 @@ export function email_for_user_settings(person) {
return person.email; return person.email;
} }
export function get_time_preferences(user_timezone) { export function get_time_preferences(user_timezone: string): {
timezone: string;
format: string;
} {
if (page_params.twenty_four_hour_time) { if (page_params.twenty_four_hour_time) {
return { return {
timezone: user_timezone, timezone: user_timezone,
@@ -77,7 +87,7 @@ export function get_time_preferences(user_timezone) {
}; };
} }
export function user_can_change_name() { export function user_can_change_name(): boolean {
if (page_params.is_admin) { if (page_params.is_admin) {
return true; return true;
} }
@@ -87,7 +97,7 @@ export function user_can_change_name() {
return true; return true;
} }
export function user_can_change_avatar() { export function user_can_change_avatar(): boolean {
if (page_params.is_admin) { if (page_params.is_admin) {
return true; return true;
} }
@@ -97,11 +107,11 @@ export function user_can_change_avatar() {
return true; return true;
} }
export function user_can_change_logo() { export function user_can_change_logo(): boolean {
return page_params.is_admin && page_params.zulip_plan_is_not_limited; return page_params.is_admin && page_params.zulip_plan_is_not_limited;
} }
function user_has_permission(policy_value) { function user_has_permission(policy_value: number): boolean {
if (page_params.is_admin) { if (page_params.is_admin) {
return true; return true;
} }
@@ -132,11 +142,12 @@ function user_has_permission(policy_value) {
const current_datetime = new Date(); const current_datetime = new Date();
const person_date_joined = new Date(user_join_date); const person_date_joined = new Date(user_join_date);
const user_join_days = (current_datetime - person_date_joined) / 1000 / 86400; const user_join_days =
(current_datetime.getTime() - person_date_joined.getTime()) / 1000 / 86400;
return user_join_days >= page_params.realm_waiting_period_threshold; return user_join_days >= page_params.realm_waiting_period_threshold;
} }
export function user_can_invite_others_to_realm() { export function user_can_invite_others_to_realm(): boolean {
if ( if (
page_params.realm_invite_to_realm_policy === page_params.realm_invite_to_realm_policy ===
settings_config.invite_to_realm_policy_values.nobody.code settings_config.invite_to_realm_policy_values.nobody.code
@@ -146,31 +157,31 @@ export function user_can_invite_others_to_realm() {
return user_has_permission(page_params.realm_invite_to_realm_policy); return user_has_permission(page_params.realm_invite_to_realm_policy);
} }
export function user_can_subscribe_other_users() { export function user_can_subscribe_other_users(): boolean {
return user_has_permission(page_params.realm_invite_to_stream_policy); return user_has_permission(page_params.realm_invite_to_stream_policy);
} }
export function user_can_unsubscribe_other_users() { export function user_can_unsubscribe_other_users(): boolean {
return page_params.is_admin; return page_params.is_admin;
} }
export function user_can_create_streams() { export function user_can_create_streams(): boolean {
return user_has_permission(page_params.realm_create_stream_policy); return user_has_permission(page_params.realm_create_stream_policy);
} }
export function user_can_move_messages_between_streams() { export function user_can_move_messages_between_streams(): boolean {
return user_has_permission(page_params.realm_move_messages_between_streams_policy); return user_has_permission(page_params.realm_move_messages_between_streams_policy);
} }
export function user_can_edit_user_groups() { export function user_can_edit_user_groups(): boolean {
return user_has_permission(page_params.realm_user_group_edit_policy); return user_has_permission(page_params.realm_user_group_edit_policy);
} }
export function user_can_add_custom_emoji() { export function user_can_add_custom_emoji(): boolean {
return user_has_permission(page_params.realm_add_custom_emoji_policy); return user_has_permission(page_params.realm_add_custom_emoji_policy);
} }
export function user_can_edit_topic_of_any_message() { export function user_can_edit_topic_of_any_message(): boolean {
if ( if (
page_params.realm_edit_topic_policy === page_params.realm_edit_topic_policy ===
settings_config.common_message_policy_values.by_everyone.code settings_config.common_message_policy_values.by_everyone.code
@@ -180,7 +191,7 @@ export function user_can_edit_topic_of_any_message() {
return user_has_permission(page_params.realm_edit_topic_policy); return user_has_permission(page_params.realm_edit_topic_policy);
} }
export function using_dark_theme() { export function using_dark_theme(): boolean {
if (page_params.color_scheme === settings_config.color_scheme_values.night.code) { if (page_params.color_scheme === settings_config.color_scheme_values.night.code) {
return true; return true;
} }