mirror of
https://github.com/zulip/zulip.git
synced 2025-11-19 22:19:48 +00:00
ts: Convert settings_data module to TypeScript.
This commit is contained in:
committed by
Tim Abbott
parent
6b93fe0cd7
commit
1711dcbc6f
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user