diff --git a/docs/tutorials/new-feature-tutorial.md b/docs/tutorials/new-feature-tutorial.md index 20f2aea0ea..3665f51eb9 100644 --- a/docs/tutorials/new-feature-tutorial.md +++ b/docs/tutorials/new-feature-tutorial.md @@ -546,7 +546,7 @@ Then add the new form control in `web/src/admin.js`. export function build_page() { const options = { custom_profile_field_types: page_params.custom_profile_field_types, - full_name: page_params.full_name, + full_name: current_user.full_name, realm_name: page_params.realm_name, // ... + realm_mandatory_topics: page_params.realm_mandatory_topics, diff --git a/tools/test-js-with-node b/tools/test-js-with-node index e702a6a1be..f7348bc37f 100755 --- a/tools/test-js-with-node +++ b/tools/test-js-with-node @@ -224,6 +224,7 @@ EXEMPT_FILES = make_set( "web/src/spectators.ts", "web/src/spoilers.ts", "web/src/starred_messages_ui.js", + "web/src/state_data.ts", "web/src/stream_color.ts", "web/src/stream_color_events.js", "web/src/stream_create.js", diff --git a/web/src/admin.js b/web/src/admin.js index 9689f18073..b42cc55c60 100644 --- a/web/src/admin.js +++ b/web/src/admin.js @@ -20,6 +20,7 @@ import * as settings_panel_menu from "./settings_panel_menu"; import * as settings_sections from "./settings_sections"; import * as settings_toggle from "./settings_toggle"; import * as settings_users from "./settings_users"; +import {current_user} from "./state_data"; const admin_settings_label = { // Organization profile @@ -70,10 +71,10 @@ const admin_settings_label = { }; function insert_tip_box() { - if (page_params.is_admin) { + if (current_user.is_admin) { return; } - const tip_box = render_settings_organization_settings_tip({is_admin: page_params.is_admin}); + const tip_box = render_settings_organization_settings_tip({is_admin: current_user.is_admin}); $(".organization-box") .find(".settings-section") .not("#emoji-settings") @@ -102,7 +103,7 @@ function get_realm_level_notification_settings(options) { export function build_page() { const options = { custom_profile_field_types: page_params.custom_profile_field_types, - full_name: page_params.full_name, + full_name: current_user.full_name, realm_name: page_params.realm_name, realm_org_type: page_params.realm_org_type, realm_available_video_chat_providers: page_params.realm_available_video_chat_providers, @@ -138,9 +139,9 @@ export function build_page() { realm_waiting_period_threshold: page_params.realm_waiting_period_threshold, realm_notifications_stream_id: page_params.realm_notifications_stream_id, realm_signup_notifications_stream_id: page_params.realm_signup_notifications_stream_id, - is_admin: page_params.is_admin, - is_guest: page_params.is_guest, - is_owner: page_params.is_owner, + is_admin: current_user.is_admin, + is_guest: current_user.is_guest, + is_owner: current_user.is_owner, user_can_change_logo: settings_data.user_can_change_logo(), realm_icon_source: page_params.realm_icon_source, realm_icon_url: page_params.realm_icon_url, @@ -244,7 +245,7 @@ export function build_page() { settings_invites.update_invite_user_panel(); insert_tip_box(); - if (page_params.demo_organization_scheduled_deletion_date && page_params.is_admin) { + if (page_params.demo_organization_scheduled_deletion_date && current_user.is_admin) { demo_organizations_ui.insert_demo_organization_warning(); demo_organizations_ui.handle_demo_organization_conversion(); } @@ -255,7 +256,7 @@ export function build_page() { const is_plan_plus = page_params.realm_plan_type === 10; const is_plan_self_hosted = page_params.realm_plan_type === 1; - if (page_params.is_admin && !(is_plan_plus || is_plan_self_hosted)) { + if (current_user.is_admin && !(is_plan_plus || is_plan_self_hosted)) { $("#realm_can_access_all_users_group_widget").prop("disabled", true); const opts = { content: $t({ diff --git a/web/src/avatar.ts b/web/src/avatar.ts index 57d94c4dee..32252a0070 100644 --- a/web/src/avatar.ts +++ b/web/src/avatar.ts @@ -7,6 +7,7 @@ import * as confirm_dialog from "./confirm_dialog"; import {$t_html} from "./i18n"; import {page_params} from "./page_params"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as upload_widget from "./upload_widget"; import type {UploadFunction, UploadWidget} from "./upload_widget"; @@ -75,7 +76,7 @@ export function build_user_avatar_widget(upload_function: UploadFunction): void return $("#user-avatar-upload-widget input.image_file_input").expectOne(); }; - if (page_params.avatar_source === "G") { + if (current_user.avatar_source === "G") { $("#user-avatar-upload-widget .image-delete-button").hide(); $("#user-avatar-source").show(); } else { diff --git a/web/src/compose.js b/web/src/compose.js index 17295cc63a..fbbe9c872a 100644 --- a/web/src/compose.js +++ b/web/src/compose.js @@ -20,12 +20,12 @@ import * as loading from "./loading"; import * as markdown from "./markdown"; import * as message_events from "./message_events"; import * as onboarding_steps from "./onboarding_steps"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as rendered_markdown from "./rendered_markdown"; import * as scheduled_messages from "./scheduled_messages"; import * as sent_messages from "./sent_messages"; import * as server_events from "./server_events"; +import {current_user} from "./state_data"; import * as transmit from "./transmit"; import {user_settings} from "./user_settings"; import * as util from "./util"; @@ -89,7 +89,7 @@ export function create_message_object() { const message = { type: compose_state.get_message_type(), content: compose_state.message_content(), - sender_id: page_params.user_id, + sender_id: current_user.user_id, queue_id: server_events.queue_id, stream_id: undefined, }; @@ -332,7 +332,7 @@ export function render_and_show_preview($preview_spinner, $preview_content_box, // Handle previews of /me messages rendered_preview_html = "

" + - _.escape(page_params.full_name) + + _.escape(current_user.full_name) + "" + rendered_content.slice("

/me".length); } else { diff --git a/web/src/compose_call_ui.js b/web/src/compose_call_ui.js index 6474d10d35..30598bb3cf 100644 --- a/web/src/compose_call_ui.js +++ b/web/src/compose_call_ui.js @@ -7,6 +7,7 @@ import * as compose_ui from "./compose_ui"; import {$t, $t_html} from "./i18n"; import {page_params} from "./page_params"; import * as rows from "./rows"; +import {current_user} from "./state_data"; import * as ui_report from "./ui_report"; import * as util from "./util"; @@ -79,7 +80,7 @@ export function generate_and_insert_audio_or_video_call_link($target_element, is xhr.responseJSON && xhr.responseJSON.code === "INVALID_ZOOM_TOKEN" ) { - page_params.has_zoom_token = false; + current_user.has_zoom_token = false; } if (status !== "abort") { ui_report.generic_embed_error( @@ -91,7 +92,7 @@ export function generate_and_insert_audio_or_video_call_link($target_element, is ); }; - if (page_params.has_zoom_token) { + if (current_user.has_zoom_token) { make_zoom_call(); } else { compose_call.zoom_token_callbacks.set(key, make_zoom_call); diff --git a/web/src/compose_validate.js b/web/src/compose_validate.js index 6a107228e0..d6c77dcefe 100644 --- a/web/src/compose_validate.js +++ b/web/src/compose_validate.js @@ -23,6 +23,7 @@ import * as reactions from "./reactions"; import * as recent_senders from "./recent_senders"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as sub_store from "./sub_store"; import * as util from "./util"; @@ -481,31 +482,31 @@ function wildcard_mention_policy_authorizes_user() { page_params.realm_wildcard_mention_policy === settings_config.wildcard_mention_policy_values.by_admins_only.code ) { - return page_params.is_admin; + return current_user.is_admin; } if ( page_params.realm_wildcard_mention_policy === settings_config.wildcard_mention_policy_values.by_moderators_only.code ) { - return page_params.is_admin || page_params.is_moderator; + return current_user.is_admin || current_user.is_moderator; } if ( page_params.realm_wildcard_mention_policy === settings_config.wildcard_mention_policy_values.by_full_members.code ) { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } - const person = people.get_by_user_id(page_params.user_id); + const person = people.get_by_user_id(current_user.user_id); const current_datetime = new Date(Date.now()); const person_date_joined = new Date(person.date_joined); const days = (current_datetime - person_date_joined) / 1000 / 86400; - return days >= page_params.realm_waiting_period_threshold && !page_params.is_guest; + return days >= page_params.realm_waiting_period_threshold && !current_user.is_guest; } - return !page_params.is_guest; + return !current_user.is_guest; } export function stream_wildcard_mention_allowed() { diff --git a/web/src/demo_organizations_ui.js b/web/src/demo_organizations_ui.js index aa7537fcb5..9809f493c4 100644 --- a/web/src/demo_organizations_ui.js +++ b/web/src/demo_organizations_ui.js @@ -12,12 +12,13 @@ import {page_params} from "./page_params"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; import * as settings_org from "./settings_org"; +import {current_user} from "./state_data"; export function insert_demo_organization_warning() { const days_remaining = get_demo_organization_deadline_days_remaining(); const rendered_demo_organization_warning = render_demo_organization_warning({ is_demo_organization: page_params.demo_organization_scheduled_deletion_date, - is_owner: page_params.is_owner, + is_owner: current_user.is_owner, days_remaining, }); $(".organization-box").find(".settings-section").prepend(rendered_demo_organization_warning); @@ -25,7 +26,7 @@ export function insert_demo_organization_warning() { export function handle_demo_organization_conversion() { $(".convert-demo-organization-button").on("click", () => { - if (!page_params.is_owner) { + if (!current_user.is_owner) { return; } diff --git a/web/src/echo.js b/web/src/echo.js index 74f746a761..b2adf848f1 100644 --- a/web/src/echo.js +++ b/web/src/echo.js @@ -12,12 +12,12 @@ import * as message_lists from "./message_lists"; import * as message_live_update from "./message_live_update"; import * as message_store from "./message_store"; import * as narrow_state from "./narrow_state"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as pm_list from "./pm_list"; import * as recent_view_data from "./recent_view_data"; import * as rows from "./rows"; import * as sent_messages from "./sent_messages"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as stream_list from "./stream_list"; import * as stream_topic_history from "./stream_topic_history"; @@ -185,7 +185,7 @@ export function insert_local_message(message_request, local_id_float, insert_new message.content_type = "text/html"; message.sender_email = people.my_current_email(); message.sender_full_name = people.my_full_name(); - message.avatar_url = page_params.avatar_url; + message.avatar_url = current_user.avatar_url; message.timestamp = Date.now() / 1000; message.local_id = local_id_float.toString(); message.locally_echoed = true; diff --git a/web/src/hashchange.js b/web/src/hashchange.js index fb314f8a90..eba34a67a4 100644 --- a/web/src/hashchange.js +++ b/web/src/hashchange.js @@ -27,6 +27,7 @@ import * as settings_panel_menu from "./settings_panel_menu"; import * as settings_toggle from "./settings_toggle"; import * as sidebar_ui from "./sidebar_ui"; import * as spectators from "./spectators"; +import {current_user} from "./state_data"; import * as stream_settings_ui from "./stream_settings_ui"; import * as ui_report from "./ui_report"; import * as user_group_edit from "./user_group_edit"; @@ -213,7 +214,7 @@ function do_hashchange_overlay(old_hash) { const old_base = hash_parser.get_hash_category(old_hash); let section = hash_parser.get_current_hash_section(); - if (base === "groups" && page_params.is_guest) { + if (base === "groups" && current_user.is_guest) { // The #groups settings page is unfinished, and disabled in production. show_home_view(); return; diff --git a/web/src/hotspots.js b/web/src/hotspots.js index 537cb9427b..4bff781079 100644 --- a/web/src/hotspots.js +++ b/web/src/hotspots.js @@ -9,7 +9,7 @@ import * as blueslip from "./blueslip"; import * as message_viewport from "./message_viewport"; import * as onboarding_steps from "./onboarding_steps"; import * as overlays from "./overlays"; -import {page_params} from "./page_params"; +import {current_user} from "./state_data"; // popover orientations const TOP = "top"; @@ -336,7 +336,7 @@ export function load_new(new_hotspots) { } export function initialize() { - load_new(onboarding_steps.filter_new_hotspots(page_params.onboarding_steps)); + load_new(onboarding_steps.filter_new_hotspots(current_user.onboarding_steps)); // open $("body").on("click", ".hotspot-icon", function (e) { diff --git a/web/src/invite.ts b/web/src/invite.ts index 7d37200630..a348919191 100644 --- a/web/src/invite.ts +++ b/web/src/invite.ts @@ -21,6 +21,7 @@ import {page_params} from "./page_params"; import * as scroll_util from "./scroll_util"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as timerender from "./timerender"; import * as ui_report from "./ui_report"; @@ -161,10 +162,10 @@ function submit_invitation_form(): void { const error_response = render_invitation_failed_error({ error_message: response_body.msg, error_list, - is_admin: page_params.is_admin, + is_admin: current_user.is_admin, is_invitee_deactivated, license_limit_reached: response_body.license_limit_reached, - has_billing_access: page_params.is_owner || page_params.is_billing_admin, + has_billing_access: current_user.is_owner || current_user.is_billing_admin, daily_limit_reached: response_body.daily_limit_reached, }); ui_report.message(error_response, $invite_status, "alert-warning"); @@ -310,8 +311,8 @@ function open_invite_user_modal(e: JQuery.ClickEvent): void const time_unit_choices = ["minutes", "hours", "days", "weeks"]; const html_body = render_invite_user_modal({ - is_admin: page_params.is_admin, - is_owner: page_params.is_owner, + is_admin: current_user.is_admin, + is_owner: current_user.is_owner, development_environment: page_params.development_environment, invite_as_options: settings_config.user_role_values, expires_in_options: settings_config.expires_in_values, diff --git a/web/src/message_edit.js b/web/src/message_edit.js index d2de43e260..55559312a4 100644 --- a/web/src/message_edit.js +++ b/web/src/message_edit.js @@ -37,6 +37,7 @@ import * as people from "./people"; import * as resize from "./resize"; import * as rows from "./rows"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as timerender from "./timerender"; import * as ui_report from "./ui_report"; @@ -70,7 +71,7 @@ export function is_topic_editable(message, edit_limit_seconds_buffer = 0) { // Organization admins and moderators can edit message topics indefinitely, // irrespective of the topic editing deadline, if edit_topic_policy allows // them to do so. - if (page_params.is_admin || page_params.is_moderator) { + if (current_user.is_admin || current_user.is_moderator) { return true; } @@ -167,7 +168,7 @@ export function is_message_sent_by_my_bot(message) { } export function get_deletability(message) { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } @@ -212,7 +213,7 @@ export function is_stream_editable(message, edit_limit_seconds_buffer = 0) { // Organization admins and moderators can edit stream indefinitely, // irrespective of the stream editing deadline, if // move_messages_between_streams_policy allows them to do so. - if (page_params.is_admin || page_params.is_moderator) { + if (current_user.is_admin || current_user.is_moderator) { return true; } diff --git a/web/src/message_list_data.ts b/web/src/message_list_data.ts index 3239b25bda..025497647c 100644 --- a/web/src/message_list_data.ts +++ b/web/src/message_list_data.ts @@ -3,7 +3,7 @@ import {FetchStatus} from "./fetch_status"; import type {Filter} from "./filter"; import type {Message} from "./message_store"; import * as muted_users from "./muted_users"; -import {page_params} from "./page_params"; +import {current_user} from "./state_data"; import * as unread from "./unread"; import * as user_topics from "./user_topics"; import * as util from "./util"; @@ -605,7 +605,9 @@ export class MessageListData { } get_last_message_sent_by_me(): Message | undefined { - const msg_index = this._items.findLastIndex((msg) => msg.sender_id === page_params.user_id); + const msg_index = this._items.findLastIndex( + (msg) => msg.sender_id === current_user.user_id, + ); if (msg_index === -1) { return undefined; } diff --git a/web/src/navbar_alerts.js b/web/src/navbar_alerts.js index e541d29c16..1d8019f283 100644 --- a/web/src/navbar_alerts.js +++ b/web/src/navbar_alerts.js @@ -14,6 +14,7 @@ import * as desktop_notifications from "./desktop_notifications"; import * as keydown_util from "./keydown_util"; import {localstorage} from "./localstorage"; import {page_params} from "./page_params"; +import {current_user} from "./state_data"; import {should_display_profile_incomplete_alert} from "./timerender"; import * as unread from "./unread"; import * as unread_ops from "./unread_ops"; @@ -77,7 +78,7 @@ export function dismiss_upgrade_nag(ls) { } export function check_profile_incomplete() { - if (!page_params.is_admin) { + if (!current_user.is_admin) { return false; } if (!should_display_profile_incomplete_alert(page_params.realm_date_created)) { @@ -141,7 +142,7 @@ export function initialize() { rendered_alert_content_html: render_server_needs_upgrade_alert_content(), }); } - } else if (page_params.warn_no_email === true && page_params.is_admin) { + } else if (page_params.warn_no_email === true && current_user.is_admin) { // if email has not been set up and the user is the admin, // display a warning to tell them to set up an email server. open({ diff --git a/web/src/onboarding_steps.js b/web/src/onboarding_steps.js index 3d2f1b9095..2ffd3e53ca 100644 --- a/web/src/onboarding_steps.js +++ b/web/src/onboarding_steps.js @@ -1,6 +1,6 @@ import * as blueslip from "./blueslip"; import * as channel from "./channel"; -import {page_params} from "./page_params"; +import {current_user} from "./state_data"; export const ONE_TIME_NOTICES_TO_DISPLAY = new Set(); @@ -35,5 +35,5 @@ export function update_notice_to_display(onboarding_steps) { } export function initialize() { - update_notice_to_display(page_params.onboarding_steps); + update_notice_to_display(current_user.onboarding_steps); } diff --git a/web/src/page_params.ts b/web/src/page_params.ts index 5d4d6e9c04..9004d48eb6 100644 --- a/web/src/page_params.ts +++ b/web/src/page_params.ts @@ -6,7 +6,6 @@ import type {GroupPermissionSetting} from "./types"; const t1 = performance.now(); export const page_params: { apps_page_url: string; - avatar_source: string; bot_types: { type_id: number; name: string; @@ -56,14 +55,8 @@ export const page_params: { name: string; }; }; - delivery_email: string; development_environment: boolean; furthest_read_time: number | null; - is_admin: boolean; - is_billing_admin: boolean; - is_guest: boolean; - is_moderator: boolean; - is_owner: boolean; is_spectator: boolean; language_list: { code: string; @@ -150,7 +143,6 @@ export const page_params: { sponsorship_pending: boolean; stop_words: string[]; translation_data: Record; - user_id: number; zulip_merge_base: string; zulip_plan_is_not_limited: boolean; zulip_version: string; diff --git a/web/src/people.ts b/web/src/people.ts index b63999de37..fbe53079fb 100644 --- a/web/src/people.ts +++ b/web/src/people.ts @@ -13,6 +13,7 @@ import {page_params} from "./page_params"; import * as reload_state from "./reload_state"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as timerender from "./timerender"; import {user_settings} from "./user_settings"; import * as util from "./util"; @@ -190,7 +191,7 @@ export function get_bot_owner_user(user: User & {is_bot: true}): User | undefine export function can_admin_user(user: User): boolean { return ( - (user.is_bot && user.bot_owner_id !== null && user.bot_owner_id === page_params.user_id) || + (user.is_bot && user.bot_owner_id !== null && user.bot_owner_id === current_user.user_id) || is_my_user_id(user.user_id) ); } @@ -978,7 +979,7 @@ export function is_active_user_for_popover(user_id: number): boolean { } export function is_current_user_only_owner(): boolean { - if (!page_params.is_owner) { + if (!current_user.is_owner) { return false; } diff --git a/web/src/personal_menu_popover.js b/web/src/personal_menu_popover.js index b38d41b34a..f31b81eb23 100644 --- a/web/src/personal_menu_popover.js +++ b/web/src/personal_menu_popover.js @@ -4,11 +4,11 @@ import tippy from "tippy.js"; import render_personal_menu from "../templates/personal_menu.hbs"; import * as narrow from "./narrow"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as popover_menus from "./popover_menus"; import * as popover_menus_data from "./popover_menus_data"; import * as popovers from "./popovers"; +import {current_user} from "./state_data"; import {parse_html} from "./ui_util"; import * as user_profile from "./user_profile"; import * as user_status from "./user_status"; @@ -47,7 +47,7 @@ export function initialize() { $popper.one("click", ".personal-menu-clear-status", (e) => { e.preventDefault(); - const me = page_params.user_id; + const me = current_user.user_id; user_status.server_update_status({ user_id: me, status_text: "", @@ -68,7 +68,7 @@ export function initialize() { }); $popper.one("click", ".narrow-self-direct-message", (e) => { - const user_id = page_params.user_id; + const user_id = current_user.user_id; const email = people.get_by_user_id(user_id).email; narrow.by("dm", email, {trigger: "personal menu"}); popovers.hide_all(); @@ -76,7 +76,7 @@ export function initialize() { }); $popper.one("click", ".narrow-messages-sent", (e) => { - const user_id = page_params.user_id; + const user_id = current_user.user_id; const email = people.get_by_user_id(user_id).email; narrow.by("sender", email, {trigger: "personal menu"}); popovers.hide_all(); diff --git a/web/src/popover_menus_data.js b/web/src/popover_menus_data.js index 3d6286ce49..e6fd15b102 100644 --- a/web/src/popover_menus_data.js +++ b/web/src/popover_menus_data.js @@ -14,6 +14,7 @@ import {page_params} from "./page_params"; import * as people from "./people"; import * as settings_data from "./settings_data"; import * as starred_messages from "./starred_messages"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as sub_store from "./sub_store"; import {num_unread_for_topic} from "./unread"; @@ -132,7 +133,7 @@ export function get_topic_popover_content_context({stream_id, topic_name, url}) topic_unmuted, can_move_topic, can_rename_topic, - is_realm_admin: page_params.is_admin, + is_realm_admin: current_user.is_admin, topic_is_resolved: resolved_topic.is_resolved(topic_name), has_starred_messages, has_unread_messages, @@ -158,22 +159,22 @@ export function get_change_visibility_policy_popover_content_context(stream_id, } export function get_personal_menu_content_context() { - const my_user_id = page_params.user_id; + const my_user_id = current_user.user_id; const invisible_mode = !user_settings.presence_enabled; const status_text = user_status.get_status_text(my_user_id); const status_emoji_info = user_status.get_status_emoji(my_user_id); return { user_id: my_user_id, invisible_mode, - user_is_guest: page_params.is_guest, + user_is_guest: current_user.is_guest, spectator_view: page_params.is_spectator, // user information - user_avatar: page_params.avatar_url_medium, + user_avatar: current_user.avatar_url_medium, is_active: people.is_active_user_for_popover(my_user_id), user_circle_class: buddy_data.get_user_circle_class(my_user_id), user_last_seen_time_status: buddy_data.user_last_seen_time_status(my_user_id), - user_full_name: page_params.full_name, + user_full_name: current_user.full_name, user_type: people.get_user_type(my_user_id), // user status @@ -186,15 +187,15 @@ export function get_personal_menu_content_context() { } export function get_gear_menu_content_context() { - const user_has_billing_access = page_params.is_billing_admin || page_params.is_owner; + const user_has_billing_access = current_user.is_billing_admin || current_user.is_owner; const is_plan_standard = page_params.realm_plan_type === 3; const is_plan_plus = page_params.realm_plan_type === 10; const is_org_on_paid_plan = is_plan_standard || is_plan_plus; return { realm_name: page_params.realm_name, realm_url: new URL(page_params.realm_uri).hostname, - is_owner: page_params.is_owner, - is_admin: page_params.is_admin, + is_owner: current_user.is_owner, + is_admin: current_user.is_admin, is_spectator: page_params.is_spectator, is_self_hosted: page_params.realm_plan_type === 1, is_development_environment: page_params.development_environment, @@ -211,7 +212,7 @@ export function get_gear_menu_content_context() { apps_page_url: page_params.apps_page_url, can_create_multiuse_invite: settings_data.user_can_create_multiuse_invite(), can_invite_users_by_email: settings_data.user_can_invite_users_by_email(), - is_guest: page_params.is_guest, + is_guest: current_user.is_guest, login_link: page_params.development_environment ? "/devlogin/" : "/login/", promote_sponsoring_zulip: page_params.promote_sponsoring_zulip, show_billing: page_params.show_billing, diff --git a/web/src/reactions.js b/web/src/reactions.js index 5baa60adb8..5042198e08 100644 --- a/web/src/reactions.js +++ b/web/src/reactions.js @@ -11,6 +11,7 @@ import * as message_store from "./message_store"; import {page_params} from "./page_params"; import * as people from "./people"; import * as spectators from "./spectators"; +import {current_user} from "./state_data"; import {user_settings} from "./user_settings"; const waiting_for_server_request_ids = new Set(); @@ -23,7 +24,7 @@ export function current_user_has_reacted_to_emoji(message, local_id) { set_clean_reactions(message); const clean_reaction_object = message.clean_reactions.get(local_id); - return clean_reaction_object && clean_reaction_object.user_ids.includes(page_params.user_id); + return clean_reaction_object && clean_reaction_object.user_ids.includes(current_user.user_id); } function get_message(message_id) { @@ -40,7 +41,7 @@ function get_message(message_id) { function create_reaction(message_id, rendering_details) { return { message_id, - user_id: page_params.user_id, + user_id: current_user.user_id, local_id: get_local_reaction_id(rendering_details), reaction_type: rendering_details.reaction_type, emoji_name: rendering_details.emoji_name, @@ -143,7 +144,7 @@ export function process_reaction_click(message_id, local_id) { function generate_title(emoji_name, user_ids) { const usernames = people.get_display_full_names( - user_ids.filter((user_id) => user_id !== page_params.user_id), + user_ids.filter((user_id) => user_id !== current_user.user_id), ); const current_user_reacted = user_ids.length !== usernames.length; @@ -278,7 +279,7 @@ export function update_existing_reaction(clean_reaction_object, message, acting_ ); $reaction.attr("aria-label", new_label); - if (acting_user_id === page_params.user_id) { + if (acting_user_id === current_user.user_id) { $reaction.addClass("reacted"); } @@ -308,7 +309,7 @@ export function insert_new_reaction(clean_reaction_object, message, user_id) { context.reaction_type === "realm_emoji" || context.reaction_type === "zulip_extra_emoji"; context.vote_text = ""; // Updated below - if (user_id === page_params.user_id) { + if (user_id === current_user.user_id) { context.class = "message_reaction reacted"; } else { context.class = "message_reaction"; @@ -380,7 +381,7 @@ export function remove_reaction_from_view(clean_reaction_object, message, user_i clean_reaction_object.user_ids, ); $reaction.attr("aria-label", new_label); - if (user_id === page_params.user_id) { + if (user_id === current_user.user_id) { $reaction.removeClass("reacted"); } @@ -388,7 +389,7 @@ export function remove_reaction_from_view(clean_reaction_object, message, user_i } export function get_emojis_used_by_user_for_message_id(message_id) { - const user_id = page_params.user_id; + const user_id = current_user.user_id; const message = message_store.get(message_id); set_clean_reactions(message); @@ -509,7 +510,7 @@ export function update_user_fields(clean_reaction_object, should_display_reactor clean_reaction_object.emoji_name, clean_reaction_object.user_ids, ); - if (clean_reaction_object.user_ids.includes(page_params.user_id)) { + if (clean_reaction_object.user_ids.includes(current_user.user_id)) { clean_reaction_object.class = "message_reaction reacted"; } else { clean_reaction_object.class = "message_reaction"; @@ -549,10 +550,10 @@ function check_should_display_reactors(cleaned_reactions) { function comma_separated_usernames(user_list) { const usernames = people.get_display_full_names(user_list); - const current_user_has_reacted = user_list.includes(page_params.user_id); + const current_user_has_reacted = user_list.includes(current_user.user_id); if (current_user_has_reacted) { - const current_user_index = user_list.indexOf(page_params.user_id); + const current_user_index = user_list.indexOf(current_user.user_id); usernames[current_user_index] = $t({ defaultMessage: "You", }); diff --git a/web/src/realm_icon.ts b/web/src/realm_icon.ts index c7b5fd25f3..3c5e0e2bd6 100644 --- a/web/src/realm_icon.ts +++ b/web/src/realm_icon.ts @@ -2,6 +2,7 @@ import $ from "jquery"; import * as channel from "./channel"; import {page_params} from "./page_params"; +import {current_user} from "./state_data"; import * as upload_widget from "./upload_widget"; import type {UploadFunction} from "./upload_widget"; @@ -10,7 +11,7 @@ export function build_realm_icon_widget(upload_function: UploadFunction): void { return $("#realm-icon-upload-widget .image_file_input").expectOne(); }; - if (!page_params.is_admin) { + if (!current_user.is_admin) { return; } if (page_params.realm_icon_source === "G") { diff --git a/web/src/realm_logo.ts b/web/src/realm_logo.ts index d957ddb56d..556d694ae5 100644 --- a/web/src/realm_logo.ts +++ b/web/src/realm_logo.ts @@ -3,6 +3,7 @@ import $ from "jquery"; import * as channel from "./channel"; import {page_params} from "./page_params"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as ui_util from "./ui_util"; import * as upload_widget from "./upload_widget"; import type {UploadFunction} from "./upload_widget"; @@ -25,7 +26,7 @@ export function build_realm_logo_widget(upload_function: UploadFunction, is_nigh return $file_input_elem.expectOne(); }; - if (!page_params.is_admin) { + if (!current_user.is_admin) { return; } diff --git a/web/src/sentry.ts b/web/src/sentry.ts index 79d91b80c9..fd4a87ed2c 100644 --- a/web/src/sentry.ts +++ b/web/src/sentry.ts @@ -2,6 +2,7 @@ import * as Sentry from "@sentry/browser"; import _ from "lodash"; import {page_params} from "./page_params"; +import {current_user} from "./state_data"; type UserInfo = { id?: string; @@ -51,21 +52,21 @@ if (page_params.server_sentry_dsn) { realm: sentry_key, }; if (sentry_key !== "www") { - user_info.role = page_params.is_owner + user_info.role = current_user.is_owner ? "Organization owner" - : page_params.is_admin + : current_user.is_admin ? "Organization administrator" - : page_params.is_moderator + : current_user.is_moderator ? "Moderator" - : page_params.is_guest + : current_user.is_guest ? "Guest" : page_params.is_spectator ? "Spectator" - : page_params.user_id + : current_user.user_id ? "Member" : "Logged out"; - if (page_params.user_id) { - user_info.id = page_params.user_id.toString(); + if (current_user.user_id) { + user_info.id = current_user.user_id.toString(); } } diff --git a/web/src/server_events_dispatch.js b/web/src/server_events_dispatch.js index 4ab03a8a95..b8c9651a3b 100644 --- a/web/src/server_events_dispatch.js +++ b/web/src/server_events_dispatch.js @@ -67,6 +67,7 @@ import * as settings_users from "./settings_users"; import * as sidebar_ui from "./sidebar_ui"; import * as starred_messages from "./starred_messages"; import * as starred_messages_ui from "./starred_messages_ui"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as stream_events from "./stream_events"; import * as stream_list from "./stream_list"; @@ -134,7 +135,7 @@ export function dispatch_normal_event(event) { } case "has_zoom_token": - page_params.has_zoom_token = event.value; + current_user.has_zoom_token = event.value; if (event.value) { for (const callback of compose_call.zoom_token_callbacks.values()) { callback(); @@ -146,8 +147,8 @@ export function dispatch_normal_event(event) { case "onboarding_steps": hotspots.load_new(onboarding_steps.filter_new_hotspots(event.onboarding_steps)); onboarding_steps.update_notice_to_display(event.onboarding_steps); - page_params.onboarding_steps = page_params.onboarding_steps - ? [...page_params.onboarding_steps, ...event.onboarding_steps] + current_user.onboarding_steps = current_user.onboarding_steps + ? [...current_user.onboarding_steps, ...event.onboarding_steps] : event.onboarding_steps; break; @@ -346,7 +347,7 @@ export function dispatch_normal_event(event) { window.location.href = "/accounts/deactivated/"; break; } - if (page_params.is_admin) { + if (current_user.is_admin) { // Update the UI notice about the user's profile being // incomplete, as we might have filled in the missing field(s). navbar_alerts.show_profile_incomplete(navbar_alerts.check_profile_incomplete()); @@ -639,7 +640,7 @@ export function dispatch_normal_event(event) { } break; case "typing": - if (event.sender.user_id === page_params.user_id) { + if (event.sender.user_id === current_user.user_id) { // typing notifications are sent to the user who is typing // as well as recipients; we ignore such self-generated events. return; @@ -817,7 +818,7 @@ export function dispatch_normal_event(event) { if (event.property === "presence_enabled") { user_settings.presence_enabled = event.value; $("#user_presence_enabled").prop("checked", user_settings.presence_enabled); - activity_ui.redraw_user(page_params.user_id); + activity_ui.redraw_user(current_user.user_id); break; } if (event.property === "email_address_visibility") { diff --git a/web/src/settings.js b/web/src/settings.js index 6bcec7fbea..ecbcb7f10c 100644 --- a/web/src/settings.js +++ b/web/src/settings.js @@ -19,6 +19,7 @@ import * as settings_panel_menu from "./settings_panel_menu"; import * as settings_preferences from "./settings_preferences"; import * as settings_sections from "./settings_sections"; import * as settings_toggle from "./settings_toggle"; +import {current_user} from "./state_data"; import * as timerender from "./timerender"; import {user_settings} from "./user_settings"; @@ -66,7 +67,7 @@ function setup_settings_label() { } function get_parsed_date_of_joining() { - const user_date_joined = people.get_by_user_id(page_params.user_id, false).date_joined; + const user_date_joined = people.get_by_user_id(current_user.user_id, false).date_joined; return timerender.get_localized_date_or_time_for_format( parseISO(user_date_joined), "dayofyear_year", @@ -81,11 +82,11 @@ function user_can_change_password() { } export function update_lock_icon_in_sidebar() { - if (page_params.is_owner) { + if (current_user.is_owner) { $(".org-settings-list .locked").hide(); return; } - if (page_params.is_admin) { + if (current_user.is_admin) { $(".org-settings-list .locked").hide(); $(".org-settings-list li[data-section='auth-methods'] .locked").show(); return; @@ -108,6 +109,7 @@ export function build_page() { const rendered_settings_tab = render_settings_tab({ full_name: people.my_full_name(), date_joined_text: get_parsed_date_of_joining(), + current_user, page_params, enable_sound_select: user_settings.enable_sounds || user_settings.enable_stream_audible_notifications, @@ -138,7 +140,7 @@ export function build_page() { user_can_change_name: settings_data.user_can_change_name(), user_can_change_avatar: settings_data.user_can_change_avatar(), user_can_change_email: settings_data.user_can_change_email(), - user_role_text: people.get_user_type(page_params.user_id), + user_role_text: people.get_user_type(current_user.user_id), default_language_name: settings_preferences.user_default_language_name, default_language: user_settings.default_language, realm_push_notifications_enabled: page_params.realm_push_notifications_enabled, @@ -182,9 +184,9 @@ export function launch(section) { export function initialize() { const rendered_settings_overlay = render_settings_overlay({ - is_owner: page_params.is_owner, - is_admin: page_params.is_admin, - is_guest: page_params.is_guest, + is_owner: current_user.is_owner, + is_admin: current_user.is_admin, + is_guest: current_user.is_guest, show_uploaded_files_section: page_params.max_file_upload_size_mib > 0, show_emoji_settings_lock: !settings_data.user_can_add_custom_emoji(), can_create_new_bots: settings_bots.can_create_new_bots(), diff --git a/web/src/settings_account.js b/web/src/settings_account.js index 480272f6b6..08d3d0f48c 100644 --- a/web/src/settings_account.js +++ b/web/src/settings_account.js @@ -25,6 +25,7 @@ import * as settings_bots from "./settings_bots"; import * as settings_data from "./settings_data"; import * as settings_org from "./settings_org"; import * as settings_ui from "./settings_ui"; +import {current_user} from "./state_data"; import * as ui_report from "./ui_report"; import * as ui_util from "./ui_util"; import * as user_pill from "./user_pill"; @@ -115,7 +116,7 @@ function upload_avatar($file_input) { }, error(xhr) { display_avatar_upload_complete(); - if (page_params.avatar_source === "G") { + if (current_user.avatar_source === "G") { $("#user-avatar-source").show(); } if (xhr.responseJSON?.msg) { @@ -156,7 +157,7 @@ export function update_account_settings_display() { } export function maybe_update_deactivate_account_button() { - if (!page_params.is_owner) { + if (!current_user.is_owner) { return; } @@ -318,7 +319,7 @@ export function set_up() { } $("#regenerate_api_key").on("click", (e) => { - const email = page_params.delivery_email; + const email = current_user.delivery_email; const api_key = $("#api_key_value").text(); const authorization_header = "Basic " + btoa(`${email}:${api_key}`); @@ -343,7 +344,7 @@ export function set_up() { $("#download_zuliprc").on("click", function () { const bot_object = { user_id: people.my_current_user_id(), - email: page_params.delivery_email, + email: current_user.delivery_email, api_key: $("#api_key_value").text(), }; const data = settings_bots.generate_zuliprc_content(bot_object); @@ -567,7 +568,7 @@ export function set_up() { if (settings_data.user_can_change_email()) { dialog_widget.launch({ html_heading: $t_html({defaultMessage: "Change email"}), - html_body: render_change_email_modal({delivery_email: page_params.delivery_email}), + html_body: render_change_email_modal({delivery_email: current_user.delivery_email}), html_submit_button: $t_html({defaultMessage: "Change"}), loading_spinner: true, id: "change_email_modal", @@ -644,14 +645,14 @@ export function set_up() { if ( page_params.demo_organization_scheduled_deletion_date && - page_params.is_owner && - page_params.delivery_email === "" + current_user.is_owner && + current_user.delivery_email === "" ) { dialog_widget.launch({ html_heading: $t_html({defaultMessage: "Add email"}), html_body: render_demo_organization_add_email_modal({ - delivery_email: page_params.delivery_email, - full_name: page_params.full_name, + delivery_email: current_user.delivery_email, + full_name: current_user.full_name, }), html_submit_button: $t_html({defaultMessage: "Add"}), loading_spinner: true, diff --git a/web/src/settings_bots.js b/web/src/settings_bots.js index 7e2a86b362..95707d9b91 100644 --- a/web/src/settings_bots.js +++ b/web/src/settings_bots.js @@ -18,6 +18,7 @@ import * as list_widget from "./list_widget"; import {page_params} from "./page_params"; import * as people from "./people"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as ui_report from "./ui_report"; import * as user_deactivation_ui from "./user_deactivation_ui"; import * as user_profile from "./user_profile"; @@ -139,11 +140,11 @@ export const bot_creation_policy_values = { }; export function can_create_new_bots() { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } - if (page_params.is_guest) { + if (current_user.is_guest) { return false; } @@ -152,14 +153,14 @@ export function can_create_new_bots() { export function update_bot_settings_tip($tip_container, for_org_settings) { if ( - !page_params.is_admin && + !current_user.is_admin && page_params.realm_bot_creation_policy === bot_creation_policy_values.everyone.code ) { $tip_container.hide(); return; } - if (page_params.is_admin && !for_org_settings) { + if (current_user.is_admin && !for_org_settings) { $tip_container.hide(); return; } diff --git a/web/src/settings_data.ts b/web/src/settings_data.ts index 45baa6bd53..b6e3d8085c 100644 --- a/web/src/settings_data.ts +++ b/web/src/settings_data.ts @@ -1,5 +1,6 @@ import {page_params} from "./page_params"; import * as settings_config from "./settings_config"; +import {current_user} from "./state_data"; import * as user_groups from "./user_groups"; import {user_settings} from "./user_settings"; @@ -20,7 +21,7 @@ export function initialize(current_user_join_date: Date): void { */ export function user_can_change_name(): boolean { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } if (page_params.realm_name_changes_disabled || page_params.server_name_changes_disabled) { @@ -30,7 +31,7 @@ export function user_can_change_name(): boolean { } export function user_can_change_avatar(): boolean { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } if (page_params.realm_avatar_changes_disabled || page_params.server_avatar_changes_disabled) { @@ -40,7 +41,7 @@ export function user_can_change_avatar(): boolean { } export function user_can_change_email(): boolean { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } if (page_params.realm_email_changes_disabled) { @@ -50,7 +51,7 @@ export function user_can_change_email(): boolean { } export function user_can_change_logo(): boolean { - return page_params.is_admin && page_params.zulip_plan_is_not_limited; + return current_user.is_admin && page_params.zulip_plan_is_not_limited; } function user_has_permission(policy_value: number): boolean { @@ -62,7 +63,7 @@ function user_has_permission(policy_value: number): boolean { return false; } - if (page_params.is_owner) { + if (current_user.is_owner) { return true; } @@ -72,7 +73,7 @@ function user_has_permission(policy_value: number): boolean { return false; } - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } @@ -87,7 +88,7 @@ function user_has_permission(policy_value: number): boolean { return true; } - if (page_params.is_guest) { + if (current_user.is_guest) { return false; } @@ -95,7 +96,7 @@ function user_has_permission(policy_value: number): boolean { return false; } - if (page_params.is_moderator) { + if (current_user.is_moderator) { return true; } @@ -125,12 +126,12 @@ export function user_can_invite_users_by_email(): boolean { } export function user_can_create_multiuse_invite(): boolean { - if (!page_params.user_id) { + if (!current_user.user_id) { return false; } return user_groups.is_user_in_group( page_params.realm_create_multiuse_invite_group, - page_params.user_id, + current_user.user_id, ); } @@ -166,7 +167,7 @@ export function user_can_edit_user_groups(): boolean { } export function can_edit_user_group(group_id: number): boolean { - if (!page_params.user_id) { + if (!current_user.user_id) { return false; } @@ -177,11 +178,11 @@ export function can_edit_user_group(group_id: number): boolean { // Admins and moderators are allowed to edit user groups even if they // are not a member of that user group. Members can edit user groups // only if they belong to that group. - if (page_params.is_admin || page_params.is_moderator) { + if (current_user.is_admin || current_user.is_moderator) { return true; } - return user_groups.is_direct_member_of(page_params.user_id, group_id); + return user_groups.is_direct_member_of(current_user.user_id, group_id); } export function user_can_add_custom_emoji(): boolean { @@ -233,7 +234,7 @@ export function user_email_not_configured(): boolean { // The following should also be true in the only circumstance // under which we expect this condition to be possible: // page_params.demo_organization_scheduled_deletion_date - return page_params.is_owner && page_params.delivery_email === ""; + return current_user.is_owner && current_user.delivery_email === ""; } export function bot_type_id_to_string(type_id: number): string | undefined { @@ -247,13 +248,13 @@ export function bot_type_id_to_string(type_id: number): string | undefined { } export function user_can_access_all_other_users(): boolean { - if (!page_params.user_id) { + if (!current_user.user_id) { return true; } return user_groups.is_user_in_group( page_params.realm_can_access_all_users_group, - page_params.user_id, + current_user.user_id, ); } diff --git a/web/src/settings_emoji.ts b/web/src/settings_emoji.ts index e61aaada26..c29574af48 100644 --- a/web/src/settings_emoji.ts +++ b/web/src/settings_emoji.ts @@ -20,6 +20,7 @@ import * as people from "./people"; import * as scroll_util from "./scroll_util"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as ui_report from "./ui_report"; import * as upload_widget from "./upload_widget"; import * as util from "./util"; @@ -29,7 +30,7 @@ const meta = { }; function can_delete_emoji(emoji: ServerEmoji): boolean { - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } if (emoji.author_id === null) { @@ -56,7 +57,7 @@ export function update_custom_emoji_ui(): void { } else { $(".add-emoji-text").show(); $("#add-custom-emoji-button").show(); - if (page_params.is_admin) { + if (current_user.is_admin) { $("#emoji-settings .emoji-settings-tip-container").show(); } else { $("#emoji-settings .emoji-settings-tip-container").hide(); @@ -269,7 +270,7 @@ function show_modal(): void { } if (is_default_emoji(emoji.name)) { - if (!page_params.is_admin) { + if (!current_user.is_admin) { ui_report.client_error( $t_html({ defaultMessage: diff --git a/web/src/settings_invites.ts b/web/src/settings_invites.ts index cff3971c80..0df41af643 100644 --- a/web/src/settings_invites.ts +++ b/web/src/settings_invites.ts @@ -15,6 +15,7 @@ import {page_params} from "./page_params"; import * as people from "./people"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as timerender from "./timerender"; import * as ui_report from "./ui_report"; import * as util from "./util"; @@ -96,10 +97,10 @@ function populate_invites(invites_data: {invites: Invite[]}): void { if (item.expiry_date !== null) { item.expiry_date_absolute_time = timerender.absolute_time(item.expiry_date * 1000); } - item.is_admin = page_params.is_admin; + item.is_admin = current_user.is_admin; item.disable_buttons = item.invited_as === settings_config.user_role_values.owner.code && - !page_params.is_owner; + !current_user.is_owner; item.referrer_name = people.get_by_user_id(item.invited_by_user_id).full_name; return render_admin_invites_list({invite: item}); }, @@ -289,7 +290,7 @@ export function on_load_success( } export function update_invite_users_setting_tip(): void { - if (settings_data.user_can_invite_users_by_email() && !page_params.is_admin) { + if (settings_data.user_can_invite_users_by_email() && !current_user.is_admin) { $(".invite-user-settings-tip").hide(); return; } diff --git a/web/src/settings_linkifiers.js b/web/src/settings_linkifiers.js index 54df971df6..6a548b9bc4 100644 --- a/web/src/settings_linkifiers.js +++ b/web/src/settings_linkifiers.js @@ -13,6 +13,7 @@ import * as ListWidget from "./list_widget"; import {page_params} from "./page_params"; import * as scroll_util from "./scroll_util"; import * as settings_ui from "./settings_ui"; +import {current_user} from "./state_data"; import * as ui_report from "./ui_report"; const meta = { @@ -24,7 +25,7 @@ export function reset() { } export function maybe_disable_widgets() { - if (page_params.is_admin) { + if (current_user.is_admin) { return; } } @@ -140,7 +141,7 @@ export function populate_linkifiers(linkifiers_data) { url_template: linkifier.url_template, id: linkifier.id, }, - can_modify: page_params.is_admin, + can_modify: current_user.is_admin, can_drag: filter_value.length === 0, }); }, @@ -160,7 +161,7 @@ export function populate_linkifiers(linkifiers_data) { $simplebar_container: $("#linkifier-settings .progressive-table-wrapper"), }); - if (page_params.is_admin) { + if (current_user.is_admin) { Sortable.create($linkifiers_table[0], { onUpdate: update_linkifiers_order, handle: ".move-handle", diff --git a/web/src/settings_org.js b/web/src/settings_org.js index 0ed9b829a7..9f533d1df2 100644 --- a/web/src/settings_org.js +++ b/web/src/settings_org.js @@ -23,6 +23,7 @@ import * as settings_data from "./settings_data"; import * as settings_notifications from "./settings_notifications"; import * as settings_realm_domains from "./settings_realm_domains"; import * as settings_ui from "./settings_ui"; +import {current_user} from "./state_data"; import * as stream_settings_data from "./stream_settings_data"; import * as ui_report from "./ui_report"; import * as user_groups from "./user_groups"; @@ -39,7 +40,7 @@ export function reset() { const DISABLED_STATE_ID = -1; export function maybe_disable_widgets() { - if (page_params.is_owner) { + if (current_user.is_owner) { return; } @@ -47,7 +48,7 @@ export function maybe_disable_widgets() { .find("input, button, select, checked") .prop("disabled", true); - if (page_params.is_admin) { + if (current_user.is_admin) { $(".deactivate_realm_button").prop("disabled", true); $("#deactivate_realm_button_container").addClass("disabled_setting_tooltip"); $("#org-message-retention").find("input, select").prop("disabled", true); @@ -382,7 +383,7 @@ function can_configure_auth_methods() { if (settings_data.user_email_not_configured()) { return false; } - if (page_params.is_owner) { + if (current_user.is_owner) { return true; } return false; diff --git a/web/src/settings_playgrounds.js b/web/src/settings_playgrounds.js index cd37668181..4ab697932e 100644 --- a/web/src/settings_playgrounds.js +++ b/web/src/settings_playgrounds.js @@ -11,6 +11,7 @@ import * as ListWidget from "./list_widget"; import {page_params} from "./page_params"; import * as realm_playground from "./realm_playground"; import * as scroll_util from "./scroll_util"; +import {current_user} from "./state_data"; import {render_typeahead_item} from "./typeahead_helper"; import * as ui_report from "./ui_report"; @@ -23,7 +24,7 @@ export function reset() { } export function maybe_disable_widgets() { - if (page_params.is_admin) { + if (current_user.is_admin) { return; } } @@ -45,7 +46,7 @@ export function populate_playgrounds(playgrounds_data) { url_template: playground.url_template, id: playground.id, }, - can_modify: page_params.is_admin, + can_modify: current_user.is_admin, }); }, filter: { diff --git a/web/src/settings_profile_fields.js b/web/src/settings_profile_fields.js index 2fb16e7698..d56172a283 100644 --- a/web/src/settings_profile_fields.js +++ b/web/src/settings_profile_fields.js @@ -16,6 +16,7 @@ import * as loading from "./loading"; import {page_params} from "./page_params"; import * as people from "./people"; import * as settings_ui from "./settings_ui"; +import {current_user} from "./state_data"; import * as ui_report from "./ui_report"; const meta = { @@ -30,7 +31,7 @@ function display_success_status() { } export function maybe_disable_widgets() { - if (page_params.is_admin) { + if (current_user.is_admin) { return; } @@ -663,7 +664,7 @@ export function do_populate_profile_fields(profile_fields_data) { display_in_profile_summary, valid_to_display_in_summary: is_valid_to_display_in_summary(profile_field.type), }, - can_modify: page_params.is_admin, + can_modify: current_user.is_admin, realm_default_external_accounts: page_params.realm_default_external_accounts, }), ); @@ -677,7 +678,7 @@ export function do_populate_profile_fields(profile_fields_data) { // Update whether we're at the limit for display_in_profile_summary. display_in_profile_summary_fields_limit_reached = display_in_profile_summary_fields_count >= 2; - if (page_params.is_admin) { + if (current_user.is_admin) { const field_list = $("#admin_profile_fields_table")[0]; Sortable.create(field_list, { onUpdate: update_field_order, @@ -695,7 +696,7 @@ function set_up_select_field() { create_choice_row("#profile_field_choices"); - if (page_params.is_admin) { + if (current_user.is_admin) { const choice_list = $("#profile_field_choices")[0]; Sortable.create(choice_list, { onUpdate() {}, diff --git a/web/src/settings_realm_user_settings_defaults.js b/web/src/settings_realm_user_settings_defaults.js index b02bab2ed2..4d54298956 100644 --- a/web/src/settings_realm_user_settings_defaults.js +++ b/web/src/settings_realm_user_settings_defaults.js @@ -2,17 +2,17 @@ import $ from "jquery"; import * as audible_notifications from "./audible_notifications"; import * as overlays from "./overlays"; -import {page_params} from "./page_params"; import {realm_user_settings_defaults} from "./realm_user_settings_defaults"; import * as settings_components from "./settings_components"; import * as settings_notifications from "./settings_notifications"; import * as settings_org from "./settings_org"; import * as settings_preferences from "./settings_preferences"; +import {current_user} from "./state_data"; export const realm_default_settings_panel = {}; export function maybe_disable_widgets() { - if (!page_params.is_admin) { + if (!current_user.is_admin) { $(".organization-box [data-name='organization-level-user-defaults']") .find("input, select") .prop("disabled", true); diff --git a/web/src/settings_streams.js b/web/src/settings_streams.js index 3c3f436a03..02150ee023 100644 --- a/web/src/settings_streams.js +++ b/web/src/settings_streams.js @@ -11,9 +11,9 @@ import * as hash_parser from "./hash_parser"; import {$t_html} from "./i18n"; import * as ListWidget from "./list_widget"; import * as loading from "./loading"; -import {page_params} from "./page_params"; import * as scroll_util from "./scroll_util"; import * as settings_profile_fields from "./settings_profile_fields"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as sub_store from "./sub_store"; import * as ui_report from "./ui_report"; @@ -87,7 +87,7 @@ export function reset() { } export function maybe_disable_widgets() { - if (page_params.is_admin) { + if (current_user.is_admin) { return; } @@ -108,7 +108,7 @@ export function build_default_stream_table() { modifier_html(item) { return render_admin_default_streams_list({ stream: item, - can_modify: page_params.is_admin, + can_modify: current_user.is_admin, }); }, filter: { diff --git a/web/src/settings_users.js b/web/src/settings_users.js index 083939f79a..9f8b5bf1d6 100644 --- a/web/src/settings_users.js +++ b/web/src/settings_users.js @@ -9,12 +9,12 @@ import * as dialog_widget from "./dialog_widget"; import {$t} from "./i18n"; import * as ListWidget from "./list_widget"; import * as loading from "./loading"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as presence from "./presence"; import * as scroll_util from "./scroll_util"; import * as settings_bots from "./settings_bots"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as timerender from "./timerender"; import * as user_deactivation_ui from "./user_deactivation_ui"; import * as user_profile from "./user_profile"; @@ -157,7 +157,7 @@ function bot_info(bot_user_id) { } info.is_current_user = false; - info.can_modify = page_params.is_admin; + info.can_modify = current_user.is_admin; info.cannot_deactivate = bot_user.is_system_bot; info.cannot_edit = bot_user.is_system_bot; @@ -186,9 +186,9 @@ function human_info(person) { info.full_name = person.full_name; info.bot_owner_id = person.bot_owner_id; - info.can_modify = page_params.is_admin; + info.can_modify = current_user.is_admin; info.is_current_user = people.is_my_user_id(person.user_id); - info.cannot_deactivate = info.is_current_user || (person.is_owner && !page_params.is_owner); + info.cannot_deactivate = info.is_current_user || (person.is_owner && !current_user.is_owner); info.display_email = person.delivery_email; if (info.is_active) { diff --git a/web/src/sidebar_ui.js b/web/src/sidebar_ui.js index 4456c70a33..6df885740b 100644 --- a/web/src/sidebar_ui.js +++ b/web/src/sidebar_ui.js @@ -9,6 +9,7 @@ import * as resize from "./resize"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; import * as spectators from "./spectators"; +import {current_user} from "./state_data"; import {user_settings} from "./user_settings"; export let left_sidebar_expanded_as_overlay = false; @@ -136,7 +137,7 @@ export function initialize() { export function initialize_left_sidebar() { const rendered_sidebar = render_left_sidebar({ - is_guest: page_params.is_guest, + is_guest: current_user.is_guest, development_environment: page_params.development_environment, is_inbox_home_view: user_settings.web_home_view === settings_config.web_home_view_values.inbox.code, diff --git a/web/src/state_data.ts b/web/src/state_data.ts new file mode 100644 index 0000000000..25ffc2b7dd --- /dev/null +++ b/web/src/state_data.ts @@ -0,0 +1,14 @@ +export let current_user: { + avatar_source: string; + delivery_email: string; + is_admin: boolean; + is_billing_admin: boolean; + is_guest: boolean; + is_moderator: boolean; + is_owner: boolean; + user_id: number; +}; + +export function set_current_user(initial_current_user: typeof current_user): void { + current_user = initial_current_user; +} diff --git a/web/src/stream_create.js b/web/src/stream_create.js index 3c36afbb5d..24dd28081f 100644 --- a/web/src/stream_create.js +++ b/web/src/stream_create.js @@ -12,6 +12,7 @@ import * as loading from "./loading"; import {page_params} from "./page_params"; import * as people from "./people"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as stream_create_subscribers from "./stream_create_subscribers"; import * as stream_data from "./stream_data"; import * as stream_settings_components from "./stream_settings_components"; @@ -338,7 +339,7 @@ export function show_new_stream_modal() { // The message retention setting is visible to owners only. The below block // sets the default state of setting if it is visible. - if (page_params.is_owner) { + if (current_user.is_owner) { $("#stream_creation_form .stream-message-retention-days-input").hide(); $("#stream_creation_form select[name=stream_message_retention_setting]").val( "realm_default", @@ -415,7 +416,7 @@ export function set_up_handlers() { stream_subscription_error.report_no_subs_to_stream(); return; } - if (!principals.includes(people.my_current_user_id()) && !page_params.is_admin) { + if (!principals.includes(people.my_current_user_id()) && !current_user.is_admin) { stream_subscription_error.cant_create_stream_without_subscribing(); return; } diff --git a/web/src/stream_create_subscribers.js b/web/src/stream_create_subscribers.js index 7e6bf47ead..ff9b20035c 100644 --- a/web/src/stream_create_subscribers.js +++ b/web/src/stream_create_subscribers.js @@ -5,8 +5,8 @@ import render_new_stream_users from "../templates/stream_settings/new_stream_use import * as add_subscribers_pill from "./add_subscribers_pill"; import * as ListWidget from "./list_widget"; -import {page_params} from "./page_params"; import * as people from "./people"; +import {current_user} from "./state_data"; import * as stream_create_subscribers_data from "./stream_create_subscribers_data"; import * as user_sort from "./user_sort"; @@ -84,7 +84,7 @@ export function build_widgets() { build_pill_widget({$parent_container: $add_people_container}); stream_create_subscribers_data.initialize_with_current_user(); - const current_user_id = page_params.user_id; + const current_user_id = current_user.user_id; all_users_list_widget = ListWidget.create($("#create_stream_subscribers"), [current_user_id], { name: "new_stream_add_users", diff --git a/web/src/stream_create_subscribers_data.ts b/web/src/stream_create_subscribers_data.ts index 7a31b1205f..a0371bc95c 100644 --- a/web/src/stream_create_subscribers_data.ts +++ b/web/src/stream_create_subscribers_data.ts @@ -1,11 +1,11 @@ -import {page_params} from "./page_params"; import * as people from "./people"; import type {User} from "./people"; +import {current_user} from "./state_data"; let user_id_set: Set; export function initialize_with_current_user(): void { - user_id_set = new Set([page_params.user_id]); + user_id_set = new Set([current_user.user_id]); } export function sorted_user_ids(): number[] { @@ -33,7 +33,7 @@ export function get_potential_subscribers(): User[] { } export function must_be_subscribed(user_id: number): boolean { - return !page_params.is_admin && user_id === page_params.user_id; + return !current_user.is_admin && user_id === current_user.user_id; } export function add_user_ids(user_ids: number[]): void { diff --git a/web/src/stream_data.ts b/web/src/stream_data.ts index b2e11f711b..c5a278c8c2 100644 --- a/web/src/stream_data.ts +++ b/web/src/stream_data.ts @@ -6,6 +6,7 @@ import * as peer_data from "./peer_data"; import * as people from "./people"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as sub_store from "./sub_store"; import type { ApiStreamSubscription, @@ -498,13 +499,14 @@ export function can_toggle_subscription(sub: StreamSubscription): boolean { // deactivated streams are automatically made private during the // archive stream process. return ( - (sub.subscribed || (!page_params.is_guest && !sub.invite_only)) && !page_params.is_spectator + (sub.subscribed || (!current_user.is_guest && !sub.invite_only)) && + !page_params.is_spectator ); } export function can_access_stream_email(sub: StreamSubscription): boolean { return ( - (sub.subscribed || sub.is_web_public || (!page_params.is_guest && !sub.invite_only)) && + (sub.subscribed || sub.is_web_public || (!current_user.is_guest && !sub.invite_only)) && !page_params.is_spectator ); } @@ -521,19 +523,19 @@ export function can_preview(sub: StreamSubscription): boolean { } export function can_change_permissions(sub: StreamSubscription): boolean { - return page_params.is_admin && (!sub.invite_only || sub.subscribed); + return current_user.is_admin && (!sub.invite_only || sub.subscribed); } export function can_view_subscribers(sub: StreamSubscription): boolean { // Guest users can't access subscribers of any(public or private) non-subscribed streams. - return page_params.is_admin || sub.subscribed || (!page_params.is_guest && !sub.invite_only); + return current_user.is_admin || sub.subscribed || (!current_user.is_guest && !sub.invite_only); } export function can_subscribe_others(sub: StreamSubscription): boolean { // User can add other users to stream if stream is public or user is subscribed to stream // and realm level setting allows user to add subscribers. return ( - !page_params.is_guest && + !current_user.is_guest && (!sub.invite_only || sub.subscribed) && settings_data.user_can_subscribe_other_users() ); @@ -567,7 +569,7 @@ export function can_unsubscribe_others(sub: StreamSubscription): boolean { return false; } - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } @@ -582,7 +584,7 @@ export function can_post_messages_in_stream(stream: StreamSubscription): boolean return false; } - if (page_params.is_admin) { + if (current_user.is_admin) { return true; } @@ -590,7 +592,7 @@ export function can_post_messages_in_stream(stream: StreamSubscription): boolean return false; } - if (page_params.is_moderator) { + if (current_user.is_moderator) { return true; } @@ -599,7 +601,7 @@ export function can_post_messages_in_stream(stream: StreamSubscription): boolean } if ( - page_params.is_guest && + current_user.is_guest && stream.stream_post_policy !== settings_config.stream_post_policy_values.everyone.code ) { return false; diff --git a/web/src/stream_edit.js b/web/src/stream_edit.js index 47738efefd..eaf8fbd848 100644 --- a/web/src/stream_edit.js +++ b/web/src/stream_edit.js @@ -24,6 +24,7 @@ import * as scroll_util from "./scroll_util"; import * as settings_components from "./settings_components"; import * as settings_config from "./settings_config"; import * as settings_org from "./settings_org"; +import {current_user} from "./state_data"; import * as stream_color from "./stream_color"; import * as stream_data from "./stream_data"; import * as stream_edit_subscribers from "./stream_edit_subscribers"; @@ -255,7 +256,7 @@ export function show_settings_for(node) { page_params.upgrade_text_for_wide_organization_logo, is_business_type_org: page_params.realm_org_type === settings_config.all_org_type_values.business.code, - is_admin: page_params.is_admin, + is_admin: current_user.is_admin, org_level_message_retention_setting: get_display_text_for_realm_message_retention_setting(), can_access_stream_email: stream_data.can_access_stream_email(sub), }); diff --git a/web/src/stream_edit_subscribers.js b/web/src/stream_edit_subscribers.js index 60ffe47a9f..2ef3cce614 100644 --- a/web/src/stream_edit_subscribers.js +++ b/web/src/stream_edit_subscribers.js @@ -12,10 +12,10 @@ import * as confirm_dialog from "./confirm_dialog"; import * as hash_parser from "./hash_parser"; import {$t, $t_html} from "./i18n"; import * as ListWidget from "./list_widget"; -import {page_params} from "./page_params"; import * as peer_data from "./peer_data"; import * as people from "./people"; import * as scroll_util from "./scroll_util"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as stream_settings_containers from "./stream_settings_containers"; import * as sub_store from "./sub_store"; @@ -30,7 +30,7 @@ function format_member_list_elem(person, user_can_remove_subscribers) { return render_stream_member_list_entry({ name: person.full_name, user_id: person.user_id, - is_current_user: person.user_id === page_params.user_id, + is_current_user: person.user_id === current_user.user_id, email: person.delivery_email, can_remove_subscribers: user_can_remove_subscribers, for_user_group_members: false, @@ -157,11 +157,11 @@ function subscribe_new_users({pill_user_ids}) { const user_id_set = new Set(active_user_ids); - if (user_id_set.has(page_params.user_id) && sub.subscribed) { + if (user_id_set.has(current_user.user_id) && sub.subscribed) { // We don't want to send a request to subscribe ourselves // if we are already subscribed to this stream. This // case occurs when creating user pills from a stream. - user_id_set.delete(page_params.user_id); + user_id_set.delete(current_user.user_id); } let ignored_deactivated_users; if (deactivated_users.size > 0) { diff --git a/web/src/stream_settings_components.js b/web/src/stream_settings_components.js index c628fa92cf..17eb32aa03 100644 --- a/web/src/stream_settings_components.js +++ b/web/src/stream_settings_components.js @@ -11,11 +11,11 @@ import * as hash_util from "./hash_util"; import {$t, $t_html} from "./i18n"; import * as loading from "./loading"; import * as overlays from "./overlays"; -import {page_params} from "./page_params"; import * as peer_data from "./peer_data"; import * as people from "./people"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as stream_ui_updates from "./stream_ui_updates"; import * as ui_report from "./ui_report"; import * as user_groups from "./user_groups"; @@ -228,7 +228,7 @@ export function unsubscribe_from_private_stream(sub) { export function sub_or_unsub(sub, $stream_row) { if (sub.subscribed) { // TODO: This next line should allow guests to access web-public streams. - if (sub.invite_only || page_params.is_guest) { + if (sub.invite_only || current_user.is_guest) { unsubscribe_from_private_stream(sub); return; } diff --git a/web/src/stream_settings_data.ts b/web/src/stream_settings_data.ts index 4a9c84449d..fe6d2a7104 100644 --- a/web/src/stream_settings_data.ts +++ b/web/src/stream_settings_data.ts @@ -1,7 +1,7 @@ import * as hash_util from "./hash_util"; -import {page_params} from "./page_params"; import * as peer_data from "./peer_data"; import * as settings_config from "./settings_config"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import type {StreamSpecificNotificationSettings, StreamSubscription} from "./sub_store"; import * as sub_store from "./sub_store"; @@ -26,10 +26,10 @@ export function get_sub_for_settings(sub: StreamSubscription): SettingsSubscript return { ...sub, - is_realm_admin: page_params.is_admin, + is_realm_admin: current_user.is_admin, // Admin can change any stream's name & description either stream is public or // private, subscribed or unsubscribed. - can_change_name_description: page_params.is_admin, + can_change_name_description: current_user.is_admin, should_display_subscription_button: stream_data.can_toggle_subscription(sub), should_display_preview_button: stream_data.can_preview(sub), @@ -57,7 +57,7 @@ export function get_updated_unsorted_subs(): SettingsSubscription[] { let all_subs = stream_data.get_unsorted_subs(); // We don't display unsubscribed streams to guest users. - if (page_params.is_guest) { + if (current_user.is_guest) { all_subs = all_subs.filter((sub) => sub.subscribed); } diff --git a/web/src/stream_settings_ui.js b/web/src/stream_settings_ui.js index 703bcfebc9..0a37d8c3a1 100644 --- a/web/src/stream_settings_ui.js +++ b/web/src/stream_settings_ui.js @@ -25,6 +25,7 @@ import * as scroll_util from "./scroll_util"; import * as search_util from "./search_util"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as stream_create from "./stream_create"; import * as stream_data from "./stream_data"; import * as stream_edit from "./stream_edit"; @@ -299,7 +300,7 @@ export function update_settings_for_unsubscribed(slim_sub) { if (!stream_data.can_toggle_subscription(sub)) { stream_ui_updates.update_add_subscriptions_elements(sub); } - if (page_params.is_guest) { + if (current_user.is_guest) { stream_edit.open_edit_panel_empty(); } @@ -582,7 +583,7 @@ export function setup_page(callback) { const toggler_elem = toggler.get(); $("#streams_overlay_container .list-toggler-container").prepend(toggler_elem); } - if (page_params.is_guest) { + if (current_user.is_guest) { toggler.disable_tab("all-streams"); } @@ -606,10 +607,10 @@ export function setup_page(callback) { settings_data.user_can_create_private_streams() || settings_data.user_can_create_public_streams() || settings_data.user_can_create_web_public_streams(), - can_view_all_streams: !page_params.is_guest && should_list_all_streams(), + can_view_all_streams: !current_user.is_guest && should_list_all_streams(), max_stream_name_length: page_params.max_stream_name_length, max_stream_description_length: page_params.max_stream_description_length, - is_owner: page_params.is_owner, + is_owner: current_user.is_owner, stream_privacy_policy_values: settings_config.stream_privacy_policy_values, stream_privacy_policy, stream_post_policy_values: settings_config.stream_post_policy_values, @@ -622,7 +623,7 @@ export function setup_page(callback) { is_business_type_org: page_params.realm_org_type === settings_config.all_org_type_values.business.code, disable_message_retention_setting: - !page_params.zulip_plan_is_not_limited || !page_params.is_owner, + !page_params.zulip_plan_is_not_limited || !current_user.is_owner, }; const rendered = render_stream_settings_overlay(template_data); @@ -701,7 +702,7 @@ function show_right_section() { export function change_state(section, right_side_tab) { // if in #streams/new form. if (section === "new") { - if (!page_params.is_guest) { + if (!current_user.is_guest) { do_open_create_stream(); show_right_section(); } else { @@ -735,7 +736,7 @@ export function change_state(section, right_side_tab) { // not be in sub_store). // // In all these cases we redirect the user to 'subscribed' tab. - if (!sub || (page_params.is_guest && !stream_data.is_subscribed(stream_id))) { + if (!sub || (current_user.is_guest && !stream_data.is_subscribed(stream_id))) { toggler.goto("subscribed"); stream_edit.empty_right_panel(); } else { diff --git a/web/src/stream_ui_updates.js b/web/src/stream_ui_updates.js index 2246f8815c..61aeb2995c 100644 --- a/web/src/stream_ui_updates.js +++ b/web/src/stream_ui_updates.js @@ -11,6 +11,7 @@ import {page_params} from "./page_params"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; import * as settings_org from "./settings_org"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as stream_edit_toggler from "./stream_edit_toggler"; import * as stream_settings_containers from "./stream_settings_containers"; @@ -231,7 +232,7 @@ export function update_default_stream_and_stream_privacy_state($container) { // In the stream creation UI, if the user is a non-admin hide the // "Default stream for new users" widget - if (is_stream_creation && !page_params.is_admin) { + if (is_stream_creation && !current_user.is_admin) { $default_stream.hide(); return; } @@ -271,7 +272,7 @@ export function enable_or_disable_permission_settings_in_edit_panel(sub) { update_default_stream_and_stream_privacy_state($stream_settings); const disable_message_retention_setting = - !page_params.zulip_plan_is_not_limited || !page_params.is_owner; + !page_params.zulip_plan_is_not_limited || !current_user.is_owner; $stream_settings .find(".stream_message_retention_setting") .prop("disabled", disable_message_retention_setting); @@ -347,7 +348,7 @@ export function update_stream_row_in_settings_tab(sub) { const $sub_row = row_for_stream_id(sub.stream_id); if (sub.subscribed) { $sub_row.removeClass("notdisplayed"); - } else if (sub.invite_only || page_params.is_guest) { + } else if (sub.invite_only || current_user.is_guest) { $sub_row.addClass("notdisplayed"); } } @@ -361,7 +362,7 @@ export function update_add_subscriptions_elements(sub) { // We are only concerned with the Subscribers tab for editing streams. const $add_subscribers_container = $(".edit_subscribers_for_stream .subscriber_list_settings"); - if (page_params.is_guest || page_params.realm_is_zephyr_mirror_realm) { + if (current_user.is_guest || page_params.realm_is_zephyr_mirror_realm) { // For guest users, we just hide the add_subscribers feature. $add_subscribers_container.hide(); return; diff --git a/web/src/transmit.js b/web/src/transmit.js index 3c529fb984..05f23edd4a 100644 --- a/web/src/transmit.js +++ b/web/src/transmit.js @@ -2,12 +2,12 @@ import * as Sentry from "@sentry/browser"; import * as blueslip from "./blueslip"; import * as channel from "./channel"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as reload from "./reload"; import * as reload_state from "./reload_state"; import * as sent_messages from "./sent_messages"; import * as server_events from "./server_events"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; export function send_message(request, on_success, error) { @@ -108,7 +108,7 @@ export function reply_message(opts) { const local_id = sent_messages.get_new_local_id(); const reply = { - sender_id: page_params.user_id, + sender_id: current_user.user_id, queue_id: server_events.queue_id, local_id, }; diff --git a/web/src/typing_events.ts b/web/src/typing_events.ts index 7a9fc3d9d4..3dd9814f08 100644 --- a/web/src/typing_events.ts +++ b/web/src/typing_events.ts @@ -6,6 +6,7 @@ import render_typing_notifications from "../templates/typing_notifications.hbs"; import * as narrow_state from "./narrow_state"; import {page_params} from "./page_params"; import * as people from "./people"; +import {current_user} from "./state_data"; import * as typing_data from "./typing_data"; // See docs/subsystems/typing-indicators.md for details on typing indicators. @@ -77,7 +78,7 @@ function get_users_typing_for_narrow(): number[] { const narrow_user_ids = narrow_user_ids_string .split(",") .map((user_id_string) => Number.parseInt(user_id_string, 10)); - const group = [...narrow_user_ids, page_params.user_id]; + const group = [...narrow_user_ids, current_user.user_id]; return typing_data.get_group_typists(group); } // Get all users typing (in all direct message conversations with current user) diff --git a/web/src/ui_init.js b/web/src/ui_init.js index ee68c9d262..b6d7bd18d2 100644 --- a/web/src/ui_init.js +++ b/web/src/ui_init.js @@ -114,6 +114,7 @@ import * as sidebar_ui from "./sidebar_ui"; import * as spoilers from "./spoilers"; import * as starred_messages from "./starred_messages"; import * as starred_messages_ui from "./starred_messages_ui"; +import {current_user, set_current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as stream_edit from "./stream_edit"; import * as stream_edit_subscribers from "./stream_edit_subscribers"; @@ -162,7 +163,7 @@ function initialize_bottom_whitespace() { function initialize_navbar() { const rendered_navbar = render_navbar({ embedded: page_params.narrow_stream !== undefined, - user_avatar: page_params.avatar_url_medium, + user_avatar: current_user.avatar_url_medium, }); $("#header-container").html(rendered_navbar); @@ -490,6 +491,31 @@ export function initialize_everything() { ); const local_message_params = pop_fields("max_message_id"); + const current_user_params = pop_fields( + "avatar_source", + "avatar_url", + "avatar_url_medium", + "can_create_private_streams", + "can_create_public_streams", + "can_create_streams", + "can_create_web_public_streams", + "can_invite_others_to_realm", + "can_subscribe_other_users", + "delivery_email", + "email", + "full_name", + "has_zoom_token", + "is_admin", + "is_billing_admin", + "is_guest", + "is_moderator", + "is_owner", + "onboarding_steps", + "user_id", + ); + + set_current_user(current_user_params); + /* To store theme data for spectators, we need to initialize user_settings before setting the theme. */ initialize_user_settings(user_settings_params); @@ -521,12 +547,12 @@ export function initialize_everything() { scheduled_messages_popover.initialize(); realm_user_settings_defaults.initialize(realm_settings_defaults_params); - people.initialize(page_params.user_id, people_params); + people.initialize(current_user.user_id, people_params); starred_messages.initialize(starred_messages_params); let date_joined; if (!page_params.is_spectator) { - const user = people.get_by_user_id(page_params.user_id); + const user = people.get_by_user_id(current_user.user_id); date_joined = user.date_joined; } else { // Spectators don't have an account, so we just prevent their diff --git a/web/src/user_card_popover.js b/web/src/user_card_popover.js index af89dc9b3f..3a05be5005 100644 --- a/web/src/user_card_popover.js +++ b/web/src/user_card_popover.js @@ -32,6 +32,7 @@ import {hide_all} from "./popovers"; import * as rows from "./rows"; import * as settings_config from "./settings_config"; import * as sidebar_ui from "./sidebar_ui"; +import {current_user} from "./state_data"; import * as timerender from "./timerender"; import * as ui_report from "./ui_report"; import * as ui_util from "./ui_util"; @@ -479,7 +480,7 @@ function toggle_user_card_popover_manage_menu(element, user) { const args = { can_mute: muting_allowed && !is_muted, - can_manage_user: page_params.is_admin && !is_me && !is_system_bot, + can_manage_user: current_user.is_admin && !is_me && !is_system_bot, can_unmute: muting_allowed && is_muted, is_active: people.is_active_user_for_popover(user.user_id), is_bot: user.is_bot, diff --git a/web/src/user_events.js b/web/src/user_events.js index c59faf6f0f..babf93954e 100644 --- a/web/src/user_events.js +++ b/web/src/user_events.js @@ -10,7 +10,6 @@ import {buddy_list} from "./buddy_list"; import * as compose_state from "./compose_state"; import * as message_live_update from "./message_live_update"; import * as narrow_state from "./narrow_state"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as pm_list from "./pm_list"; import * as settings from "./settings"; @@ -22,6 +21,7 @@ import * as settings_profile_fields from "./settings_profile_fields"; import * as settings_realm_user_settings_defaults from "./settings_realm_user_settings_defaults"; import * as settings_streams from "./settings_streams"; import * as settings_users from "./settings_users"; +import {current_user} from "./state_data"; import * as stream_events from "./stream_events"; export const update_person = function update(person) { @@ -40,7 +40,7 @@ export const update_person = function update(person) { compose_state.update_email(user_id, new_email); if (people.is_my_user_id(person.user_id)) { - page_params.email = new_email; + current_user.email = new_email; } people.update_email(user_id, new_email); @@ -51,7 +51,7 @@ export const update_person = function update(person) { person_obj.delivery_email = delivery_email; if (people.is_my_user_id(person.user_id)) { settings_account.update_email(delivery_email); - page_params.delivery_email = delivery_email; + current_user.delivery_email = delivery_email; settings_account.hide_confirm_email_banner(); } } @@ -64,7 +64,7 @@ export const update_person = function update(person) { message_live_update.update_user_full_name(person.user_id, person.full_name); pm_list.update_private_messages(); if (people.is_my_user_id(person.user_id)) { - page_params.full_name = person.full_name; + current_user.full_name = person.full_name; settings_account.update_full_name(person.full_name); } } @@ -78,14 +78,14 @@ export const update_person = function update(person) { person_obj.is_moderator = person.role === settings_config.user_role_values.moderator.code; settings_users.update_user_data(person.user_id, person); - if (people.is_my_user_id(person.user_id) && page_params.is_owner !== person_obj.is_owner) { - page_params.is_owner = person_obj.is_owner; + if (people.is_my_user_id(person.user_id) && current_user.is_owner !== person_obj.is_owner) { + current_user.is_owner = person_obj.is_owner; settings_org.maybe_disable_widgets(); settings.update_lock_icon_in_sidebar(); } - if (people.is_my_user_id(person.user_id) && page_params.is_admin !== person_obj.is_admin) { - page_params.is_admin = person_obj.is_admin; + if (people.is_my_user_id(person.user_id) && current_user.is_admin !== person_obj.is_admin) { + current_user.is_admin = person_obj.is_admin; settings_linkifiers.maybe_disable_widgets(); settings_org.maybe_disable_widgets(); settings_profile_fields.maybe_disable_widgets(); @@ -97,16 +97,16 @@ export const update_person = function update(person) { if ( people.is_my_user_id(person.user_id) && - page_params.is_moderator !== person_obj.is_moderator + current_user.is_moderator !== person_obj.is_moderator ) { - page_params.is_moderator = person_obj.is_moderator; + current_user.is_moderator = person_obj.is_moderator; } } if (Object.hasOwn(person, "is_billing_admin")) { person_obj.is_billing_admin = person.is_billing_admin; if (people.is_my_user_id(person.user_id)) { - page_params.is_billing_admin = person_obj.is_billing_admin; + current_user.is_billing_admin = person_obj.is_billing_admin; } } @@ -116,9 +116,9 @@ export const update_person = function update(person) { person_obj.avatar_version = person.avatar_version; if (people.is_my_user_id(person.user_id)) { - page_params.avatar_source = person.avatar_source; - page_params.avatar_url = url; - page_params.avatar_url_medium = person.avatar_url_medium; + current_user.avatar_source = person.avatar_source; + current_user.avatar_url = url; + current_user.avatar_url_medium = person.avatar_url_medium; $("#user-avatar-upload-widget .image-block").attr("src", person.avatar_url_medium); $("#personal-menu .header-button-avatar").attr("src", `${person.avatar_url_medium}`); } diff --git a/web/src/user_group_create_members.js b/web/src/user_group_create_members.js index 14bdbe3a06..8307177442 100644 --- a/web/src/user_group_create_members.js +++ b/web/src/user_group_create_members.js @@ -5,8 +5,8 @@ import render_new_user_group_users from "../templates/user_group_settings/new_us import * as add_subscribers_pill from "./add_subscribers_pill"; import * as ListWidget from "./list_widget"; -import {page_params} from "./page_params"; import * as people from "./people"; +import {current_user} from "./state_data"; import * as user_group_create_members_data from "./user_group_create_members_data"; import * as user_sort from "./user_sort"; @@ -88,7 +88,7 @@ export function build_widgets() { build_pill_widget({$parent_container: $add_people_container}); user_group_create_members_data.initialize_with_current_user(); - const current_user_id = page_params.user_id; + const current_user_id = current_user.user_id; all_users_list_widget = ListWidget.create($("#create_user_group_members"), [current_user_id], { name: "new_user_group_add_users", diff --git a/web/src/user_group_create_members_data.ts b/web/src/user_group_create_members_data.ts index cf8f45adc9..1864b031d8 100644 --- a/web/src/user_group_create_members_data.ts +++ b/web/src/user_group_create_members_data.ts @@ -1,11 +1,11 @@ -import {page_params} from "./page_params"; import * as people from "./people"; import type {User} from "./people"; +import {current_user} from "./state_data"; let user_id_set: Set; export function initialize_with_current_user(): void { - user_id_set = new Set([page_params.user_id]); + user_id_set = new Set([current_user.user_id]); } export function sorted_user_ids(): number[] { diff --git a/web/src/user_group_edit.js b/web/src/user_group_edit.js index 4b8ccd88f9..b539cd0240 100644 --- a/web/src/user_group_edit.js +++ b/web/src/user_group_edit.js @@ -23,6 +23,7 @@ import * as scroll_util from "./scroll_util"; import * as settings_components from "./settings_components"; import * as settings_data from "./settings_data"; import * as settings_org from "./settings_org"; +import {current_user} from "./state_data"; import * as stream_ui_updates from "./stream_ui_updates"; import * as ui_report from "./ui_report"; import * as user_group_components from "./user_group_components"; @@ -79,7 +80,7 @@ function update_add_members_elements(group) { // We are only concerned with the Members tab for editing groups. const $add_members_container = $(".edit_members_for_user_group .add_members_container"); - if (page_params.is_guest || page_params.realm_is_zephyr_mirror_realm) { + if (current_user.is_guest || page_params.realm_is_zephyr_mirror_realm) { // For guest users, we just hide the add_members feature. $add_members_container.hide(); return; diff --git a/web/src/user_group_edit_members.js b/web/src/user_group_edit_members.js index a3753e44c2..1c18c1fa98 100644 --- a/web/src/user_group_edit_members.js +++ b/web/src/user_group_edit_members.js @@ -11,10 +11,10 @@ import * as channel from "./channel"; import * as confirm_dialog from "./confirm_dialog"; import {$t, $t_html} from "./i18n"; import * as ListWidget from "./list_widget"; -import {page_params} from "./page_params"; import * as people from "./people"; import * as scroll_util from "./scroll_util"; import * as settings_data from "./settings_data"; +import {current_user} from "./state_data"; import * as user_groups from "./user_groups"; import * as user_sort from "./user_sort"; @@ -53,7 +53,7 @@ function format_member_list_elem(person) { return render_user_group_member_list_entry({ name: person.full_name, user_id: person.user_id, - is_current_user: person.user_id === page_params.user_id, + is_current_user: person.user_id === current_user.user_id, email: person.delivery_email, can_remove_subscribers: settings_data.can_edit_user_group(current_group_id), for_user_group_members: true, @@ -181,13 +181,13 @@ function add_new_members({pill_user_ids}) { const user_id_set = new Set(active_user_ids); if ( - user_id_set.has(page_params.user_id) && - user_groups.is_user_in_group(group.id, page_params.user_id) + user_id_set.has(current_user.user_id) && + user_groups.is_user_in_group(group.id, current_user.user_id) ) { // We don't want to send a request to add ourselves if we // are already added to this group. This case occurs // when creating user pills from a stream or user group. - user_id_set.delete(page_params.user_id); + user_id_set.delete(current_user.user_id); } let ignored_deactivated_users; @@ -286,7 +286,7 @@ function remove_member({group_id, target_user_id, $list_entry}) { }); } - if (people.is_my_user_id(target_user_id) && !page_params.is_admin) { + if (people.is_my_user_id(target_user_id) && !current_user.is_admin) { const html_body = render_leave_user_group_modal({ message: $t({ defaultMessage: "Once you leave this group, you will not be able to rejoin.", diff --git a/web/src/user_group_popover.ts b/web/src/user_group_popover.ts index 1dc8668b3b..d3ae1d85dc 100644 --- a/web/src/user_group_popover.ts +++ b/web/src/user_group_popover.ts @@ -8,11 +8,11 @@ import * as blueslip from "./blueslip"; import * as buddy_data from "./buddy_data"; import * as hash_util from "./hash_util"; import * as message_lists from "./message_lists"; -import {page_params} from "./page_params"; import * as people from "./people"; import type {User} from "./people"; import * as popover_menus from "./popover_menus"; import * as rows from "./rows"; +import {current_user} from "./state_data"; import * as ui_util from "./ui_util"; import * as user_groups from "./user_groups"; import * as util from "./util"; @@ -97,7 +97,7 @@ export function toggle_user_group_info_popover( group_description: group.description, members: sort_group_members(fetch_group_members([...group.members])), group_edit_url: hash_util.group_edit_url(group), - is_guest: page_params.is_guest, + is_guest: current_user.is_guest, }; instance.setContent(ui_util.parse_html(render_user_group_info_popover(args))); }, diff --git a/web/src/user_groups.ts b/web/src/user_groups.ts index 832acd1b6b..5b78e24598 100644 --- a/web/src/user_groups.ts +++ b/web/src/user_groups.ts @@ -1,8 +1,8 @@ import * as blueslip from "./blueslip"; import {FoldDict} from "./fold_dict"; import * as group_permission_settings from "./group_permission_settings"; -import {page_params} from "./page_params"; import * as settings_config from "./settings_config"; +import {current_user} from "./state_data"; import type {UserOrMention} from "./typeahead_helper"; import type {UserGroupUpdateEvent} from "./types"; @@ -100,7 +100,7 @@ export function get_user_groups_allowed_to_mention(): UserGroup[] { const user_groups = get_realm_user_groups(); return user_groups.filter((group) => { const can_mention_group_id = group.can_mention_group; - return is_user_in_group(can_mention_group_id, page_params.user_id); + return is_user_in_group(can_mention_group_id, current_user.user_id); }); } diff --git a/web/src/user_profile.js b/web/src/user_profile.js index 0493271ccb..d6625349ae 100644 --- a/web/src/user_profile.js +++ b/web/src/user_profile.js @@ -31,6 +31,7 @@ import * as people from "./people"; import * as settings_config from "./settings_config"; import * as settings_data from "./settings_data"; import * as settings_profile_fields from "./settings_profile_fields"; +import {current_user} from "./state_data"; import * as stream_data from "./stream_data"; import * as stream_ui_updates from "./stream_ui_updates"; import * as sub_store from "./sub_store"; @@ -361,7 +362,7 @@ export function show_user_profile(user, default_tab_key = "profile-tab") { // We currently have the main UI for editing your own profile in // settings, so can_manage_profile is artificially false for those. const can_manage_profile = - (people.can_admin_user(user) || page_params.is_admin) && + (people.can_admin_user(user) || current_user.is_admin) && !user.is_system_bot && !people.is_my_user_id(user.user_id); const args = { @@ -498,7 +499,7 @@ export function show_edit_bot_info_modal(user_id, $container) { email: bot.email, full_name: bot.full_name, user_role_values: settings_config.user_role_values, - disable_role_dropdown: !page_params.is_admin || (bot.is_owner && !page_params.is_owner), + disable_role_dropdown: !current_user.is_admin || (bot.is_owner && !current_user.is_owner), bot_avatar_url: bot.avatar_url, owner_full_name, current_bot_owner: bot.bot_owner_id, @@ -606,7 +607,7 @@ export function show_edit_bot_info_modal(user_id, $container) { bot_owner_dropdown_widget.setup(); $("#bot-role-select").val(bot.role); - if (!page_params.is_owner) { + if (!current_user.is_owner) { $("#bot-role-select") .find(`option[value="${CSS.escape(settings_config.user_role_values.owner.code)}"]`) .hide(); @@ -722,7 +723,7 @@ export function show_edit_user_info_modal(user_id, $container) { email: person.delivery_email, full_name: person.full_name, user_role_values: settings_config.user_role_values, - disable_role_dropdown: person.is_owner && !page_params.is_owner, + disable_role_dropdown: person.is_owner && !current_user.is_owner, owner_is_only_user_in_organization: people.get_active_human_count() === 1, is_active, }); @@ -730,7 +731,7 @@ export function show_edit_user_info_modal(user_id, $container) { $container.append(html_body); // Set role dropdown and fields user pills $("#user-role-select").val(person.role); - if (!page_params.is_owner) { + if (!current_user.is_owner) { $("#user-role-select") .find(`option[value="${CSS.escape(settings_config.user_role_values.owner.code)}"]`) .hide(); diff --git a/web/src/zulip_test.js b/web/src/zulip_test.js index b16823aeba..7fb0c2e2d7 100644 --- a/web/src/zulip_test.js +++ b/web/src/zulip_test.js @@ -12,4 +12,5 @@ export {cancel as cancel_compose} from "./compose_actions"; export {page_params, page_params_parse_time} from "./page_params"; export {initiate as initiate_reload} from "./reload"; export {page_load_time} from "./setup"; +export {current_user} from "./state_data"; export {add_user_id_to_new_stream} from "./stream_create_subscribers"; diff --git a/web/templates/settings/account_settings.hbs b/web/templates/settings/account_settings.hbs index 4ff490c35e..4e89baa32c 100644 --- a/web/templates/settings/account_settings.hbs +++ b/web/templates/settings/account_settings.hbs @@ -11,7 +11,7 @@

diff --git a/web/templates/settings/bot_settings.hbs b/web/templates/settings/bot_settings.hbs index fe3eb34e9d..13fc954a63 100644 --- a/web/templates/settings/bot_settings.hbs +++ b/web/templates/settings/bot_settings.hbs @@ -1,6 +1,6 @@
- {{#unless page_params.is_guest}} + {{#unless current_user.is_guest}}
{{#tr}} Looking for our integrations or API documentation? diff --git a/web/templates/settings/profile_settings.hbs b/web/templates/settings/profile_settings.hbs index d9a27f72e8..213ac8a97a 100644 --- a/web/templates/settings/profile_settings.hbs +++ b/web/templates/settings/profile_settings.hbs @@ -9,7 +9,7 @@
- +
@@ -45,7 +45,7 @@ delete_text = (t "Delete profile picture") disabled_text = (t "Avatar changes are disabled in this organization") is_editable_by_current_user = user_can_change_avatar - image = page_params.avatar_url_medium}} + image = current_user.avatar_url_medium}} diff --git a/web/tests/activity.test.js b/web/tests/activity.test.js index b14d966ffe..f7581aa308 100644 --- a/web/tests/activity.test.js +++ b/web/tests/activity.test.js @@ -6,7 +6,7 @@ const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespac const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const $window_stub = $.create("window-stub"); set_global("to_$", () => $window_stub); @@ -138,17 +138,17 @@ run_test("reload_defaults", () => { test("get_status", () => { page_params.realm_users = []; - page_params.user_id = 999; + current_user.user_id = 999; - assert.equal(presence.get_status(page_params.user_id), "active"); + assert.equal(presence.get_status(current_user.user_id), "active"); assert.equal(presence.get_status(alice.user_id), "active"); assert.equal(presence.get_status(mark.user_id), "idle"); assert.equal(presence.get_status(fred.user_id), "active"); user_settings.presence_enabled = false; - assert.equal(presence.get_status(page_params.user_id), "offline"); + assert.equal(presence.get_status(current_user.user_id), "offline"); user_settings.presence_enabled = true; - assert.equal(presence.get_status(page_params.user_id), "active"); + assert.equal(presence.get_status(current_user.user_id), "active"); presence.presence_info.delete(zoe.user_id); assert.equal(presence.get_status(zoe.user_id), "offline"); diff --git a/web/tests/buddy_data.test.js b/web/tests/buddy_data.test.js index 455411767c..24a9766814 100644 --- a/web/tests/buddy_data.test.js +++ b/web/tests/buddy_data.test.js @@ -7,7 +7,7 @@ const _ = require("lodash"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const timerender = mock_esm("../src/timerender"); @@ -316,7 +316,7 @@ test("title_data", () => { third_line: "translated: Active now", show_you: true, }; - page_params.user_id = me.user_id; + current_user.user_id = me.user_id; assert.deepEqual(buddy_data.get_title_data(me.user_id, is_group), expected_data); expected_data = { diff --git a/web/tests/compose.test.js b/web/tests/compose.test.js index 5bc7d97d91..c0efde5400 100644 --- a/web/tests/compose.test.js +++ b/web/tests/compose.test.js @@ -10,7 +10,7 @@ const {$t} = require("./lib/i18n"); const {mock_esm, set_global, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const settings_config = zrequire("settings_config"); @@ -231,7 +231,7 @@ test_ui("send_message", ({override, override_rewire, mock_template}) => { stub_state = initialize_state_stub_dict(); compose_state.topic(""); compose_state.set_message_type("private"); - page_params.user_id = new_user.user_id; + current_user.user_id = new_user.user_id; override(compose_pm_pill, "get_emails", () => "alice@example.com"); const server_message_id = 127; @@ -367,7 +367,7 @@ test_ui("enter_with_preview_open", ({override, override_rewire}) => { show_button_spinner_called = true; }); - page_params.user_id = new_user.user_id; + current_user.user_id = new_user.user_id; // Test sending a message with content. compose_state.set_message_type("stream"); diff --git a/web/tests/compose_validate.test.js b/web/tests/compose_validate.test.js index 45188bb581..bb51100c2e 100644 --- a/web/tests/compose_validate.test.js +++ b/web/tests/compose_validate.test.js @@ -8,7 +8,7 @@ const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const channel = mock_esm("../src/channel"); const compose_banner = zrequire("compose_banner"); @@ -318,21 +318,21 @@ test_ui("get_invalid_recipient_emails", ({override_rewire}) => { full_name: "Welcome Bot", }; - page_params.user_id = me.user_id; + current_user.user_id = me.user_id; const params = {}; params.realm_users = []; params.realm_non_active_users = []; params.cross_realm_bots = [welcome_bot]; - people.initialize(page_params.user_id, params); + people.initialize(current_user.user_id, params); override_rewire(compose_state, "private_message_recipient", () => "welcome-bot@example.com"); assert.deepEqual(compose_validate.get_invalid_recipient_emails(), []); }); test_ui("test_stream_wildcard_mention_allowed", ({override_rewire}) => { - page_params.user_id = me.user_id; + current_user.user_id = me.user_id; // First, check for large streams (>15 subscribers) where the wildcard mention // policy matters. @@ -340,50 +340,50 @@ test_ui("test_stream_wildcard_mention_allowed", ({override_rewire}) => { page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.by_everyone.code; - page_params.is_guest = true; - page_params.is_admin = false; + current_user.is_guest = true; + current_user.is_admin = false; assert.ok(compose_validate.stream_wildcard_mention_allowed()); page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.nobody.code; - page_params.is_admin = true; + current_user.is_admin = true; assert.ok(!compose_validate.stream_wildcard_mention_allowed()); page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.by_members.code; - page_params.is_guest = true; - page_params.is_admin = false; + current_user.is_guest = true; + current_user.is_admin = false; assert.ok(!compose_validate.stream_wildcard_mention_allowed()); - page_params.is_guest = false; + current_user.is_guest = false; assert.ok(compose_validate.stream_wildcard_mention_allowed()); page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.by_moderators_only.code; - page_params.is_moderator = false; + current_user.is_moderator = false; assert.ok(!compose_validate.stream_wildcard_mention_allowed()); - page_params.is_moderator = true; + current_user.is_moderator = true; assert.ok(compose_validate.stream_wildcard_mention_allowed()); page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.by_admins_only.code; - page_params.is_admin = false; + current_user.is_admin = false; assert.ok(!compose_validate.stream_wildcard_mention_allowed()); // TODO: Add a by_admins_only case when we implement stream-level administrators. - page_params.is_admin = true; + current_user.is_admin = true; assert.ok(compose_validate.stream_wildcard_mention_allowed()); page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.by_full_members.code; - const person = people.get_by_user_id(page_params.user_id); + const person = people.get_by_user_id(current_user.user_id); person.date_joined = new Date(Date.now()); page_params.realm_waiting_period_threshold = 10; assert.ok(compose_validate.stream_wildcard_mention_allowed()); - page_params.is_admin = false; + current_user.is_admin = false; assert.ok(!compose_validate.stream_wildcard_mention_allowed()); // Now, check for small streams (<=15 subscribers) where the wildcard mention @@ -391,8 +391,8 @@ test_ui("test_stream_wildcard_mention_allowed", ({override_rewire}) => { override_rewire(peer_data, "get_subscriber_count", () => 14); page_params.realm_wildcard_mention_policy = settings_config.wildcard_mention_policy_values.by_admins_only.code; - page_params.is_admin = false; - page_params.is_guest = true; + current_user.is_admin = false; + current_user.is_guest = true; assert.ok(compose_validate.stream_wildcard_mention_allowed()); }); @@ -402,7 +402,7 @@ test_ui("validate_stream_message", ({override_rewire, mock_template}) => { // we are separating it up in different test. Though their relative position // of execution should not be changed. mock_banners(); - page_params.user_id = me.user_id; + current_user.user_id = me.user_id; page_params.realm_mandatory_topics = false; const special_sub = { @@ -452,7 +452,7 @@ test_ui("test_validate_stream_message_post_policy_admin_only", ({mock_template}) // Although the position with respect to test_validate_stream_message does not matter // as different stream is used for this test. mock_banners(); - page_params.is_admin = false; + current_user.is_admin = false; const sub_stream_102 = { stream_id: 102, name: "stream102", @@ -482,8 +482,8 @@ test_ui("test_validate_stream_message_post_policy_admin_only", ({mock_template}) // Reset error message. compose_state.set_stream_id(social_sub.stream_id); - page_params.is_admin = false; - page_params.is_guest = true; + current_user.is_admin = false; + current_user.is_guest = true; compose_state.topic("topic102"); compose_state.set_stream_id(sub_stream_102.stream_id); @@ -495,9 +495,9 @@ test_ui("test_validate_stream_message_post_policy_admin_only", ({mock_template}) test_ui("test_validate_stream_message_post_policy_moderators_only", ({mock_template}) => { mock_banners(); - page_params.is_admin = false; - page_params.is_moderator = false; - page_params.is_guest = false; + current_user.is_admin = false; + current_user.is_moderator = false; + current_user.is_guest = false; const sub = { stream_id: 104, @@ -526,15 +526,15 @@ test_ui("test_validate_stream_message_post_policy_moderators_only", ({mock_templ // Reset error message. compose_state.set_stream_id(social_sub.stream_id); - page_params.is_guest = true; + current_user.is_guest = true; assert.ok(!compose_validate.validate()); assert.ok(banner_rendered); }); test_ui("test_validate_stream_message_post_policy_full_members_only", ({mock_template}) => { mock_banners(); - page_params.is_admin = false; - page_params.is_guest = true; + current_user.is_admin = false; + current_user.is_guest = true; const sub = { stream_id: 103, name: "stream103", diff --git a/web/tests/compose_video.test.js b/web/tests/compose_video.test.js index de7fe4b3a9..e2ef7eb79c 100644 --- a/web/tests/compose_video.test.js +++ b/web/tests/compose_video.test.js @@ -6,7 +6,7 @@ const events = require("./lib/events"); const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const channel = mock_esm("../src/channel"); const compose_closed_ui = mock_esm("../src/compose_closed_ui"); @@ -171,7 +171,7 @@ test("videos", ({override}) => { }); page_params.realm_video_chat_provider = realm_available_video_chat_providers.zoom.id; - page_params.has_zoom_token = false; + current_user.has_zoom_token = false; window.open = (url) => { assert.ok(url.endsWith("/calls/zoom/register")); diff --git a/web/tests/composebox_typeahead.test.js b/web/tests/composebox_typeahead.test.js index d4b95d56c2..44fc13fb55 100644 --- a/web/tests/composebox_typeahead.test.js +++ b/web/tests/composebox_typeahead.test.js @@ -7,7 +7,7 @@ const {mock_banners} = require("./lib/compose_banner"); const {mock_esm, set_global, with_overrides, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); let autosize_called; @@ -1609,7 +1609,7 @@ test("content_highlighter", ({override_rewire}) => { test("filter_and_sort_mentions (normal)", () => { compose_state.set_message_type("stream"); const is_silent = false; - page_params.user_id = 101; + current_user.user_id = 101; let suggestions = ct.filter_and_sort_mentions(is_silent, "al"); const mention_all = ct.broadcast_mentions()[0]; @@ -1617,14 +1617,14 @@ test("filter_and_sort_mentions (normal)", () => { // call_center group is shown in typeahead even when user is member of // one of the subgroups of can_mention_group. - page_params.user_id = 104; + current_user.user_id = 104; suggestions = ct.filter_and_sort_mentions(is_silent, "al"); assert.deepEqual(suggestions, [mention_all, ali, alice, hal, call_center]); // call_center group is not shown in typeahead when user is neither // a direct member of can_mention_group nor a member of any of its // recursive subgroups. - page_params.user_id = 102; + current_user.user_id = 102; suggestions = ct.filter_and_sort_mentions(is_silent, "al"); assert.deepEqual(suggestions, [mention_all, ali, alice, hal]); }); @@ -1639,7 +1639,7 @@ test("filter_and_sort_mentions (silent)", () => { // call_center group is shown in typeahead irrespective of whether // user is member of can_mention_group or its subgroups for a // silent mention. - page_params.user_id = 102; + current_user.user_id = 102; suggestions = ct.filter_and_sort_mentions(is_silent, "al"); assert.deepEqual(suggestions, [ali, alice, hal, call_center]); }); @@ -1750,7 +1750,7 @@ test("typeahead_results", () => { // Earlier user group and stream mentions were autocompleted by their // description too. This is now removed as it often led to unexpected // behaviour, and did not have any great discoverability advantage. - page_params.user_id = 101; + current_user.user_id = 101; // Autocomplete user group mentions by group name. assert_mentions_matches("hamletchar", [hamletcharacters]); diff --git a/web/tests/dispatch.test.js b/web/tests/dispatch.test.js index dc333d8590..93f755dbce 100644 --- a/web/tests/dispatch.test.js +++ b/web/tests/dispatch.test.js @@ -8,7 +8,12 @@ const {make_stub} = require("./lib/stub"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params, realm_user_settings_defaults, user_settings} = require("./lib/zpage_params"); +const { + current_user, + page_params, + realm_user_settings_defaults, + user_settings, +} = require("./lib/zpage_params"); const event_fixtures = events.fixtures; const test_message = events.test_message; @@ -108,7 +113,7 @@ message_lists.all_rendered_message_lists = () => [message_lists.home, message_li // page_params is highly coupled to dispatching now page_params.test_suite = false; -page_params.is_admin = true; +current_user.is_admin = true; page_params.realm_description = "already set description"; // For data-oriented modules, just use them, don't stub them. @@ -303,11 +308,11 @@ run_test("default_streams", ({override}) => { }); run_test("onboarding_steps", ({override}) => { - page_params.onboarding_steps = []; + current_user.onboarding_steps = []; const event = event_fixtures.onboarding_steps; override(hotspots, "load_new", noop); dispatch(event); - assert_same(page_params.onboarding_steps, event.onboarding_steps); + assert_same(current_user.onboarding_steps, event.onboarding_steps); }); run_test("invites_changed", ({override}) => { @@ -414,7 +419,7 @@ run_test("scheduled_messages", ({override}) => { }); run_test("realm settings", ({override}) => { - page_params.is_admin = true; + current_user.is_admin = true; page_params.realm_date_created = new Date("2023-01-01Z"); override(settings_org, "sync_realm_settings", noop); @@ -772,7 +777,7 @@ run_test("submessage", ({override}) => { run_test("typing", ({override}) => { // Simulate that we are not typing. - page_params.user_id = typing_person1.user_id + 1; + current_user.user_id = typing_person1.user_id + 1; let event = event_fixtures.typing__start; { @@ -795,10 +800,10 @@ run_test("typing", ({override}) => { } // Get line coverage--we ignore our own typing events. - page_params.user_id = typing_person1.user_id; + current_user.user_id = typing_person1.user_id; event = event_fixtures.typing__start; dispatch(event); - page_params.user_id = undefined; // above change shouldn't effect stream_typing tests below + current_user.user_id = undefined; // above change shouldn't effect stream_typing tests below }); run_test("stream_typing", ({override}) => { diff --git a/web/tests/echo.test.js b/web/tests/echo.test.js index 80b72d7a2a..fa6a65acbc 100644 --- a/web/tests/echo.test.js +++ b/web/tests/echo.test.js @@ -7,7 +7,7 @@ const MockDate = require("mockdate"); const {mock_esm, zrequire} = require("./lib/namespace"); const {make_stub} = require("./lib/stub"); const {run_test, noop} = require("./lib/test"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); const compose_notifications = mock_esm("../src/compose_notifications"); const markdown = mock_esm("../src/markdown"); @@ -124,7 +124,7 @@ run_test("process_from_server for differently rendered messages", ({override}) = }); run_test("build_display_recipient", () => { - page_params.user_id = 123; + current_user.user_id = 123; const params = {}; params.realm_users = [ @@ -141,7 +141,7 @@ run_test("build_display_recipient", () => { ]; params.realm_non_active_users = []; params.cross_realm_bots = []; - people.initialize(page_params.user_id, params); + people.initialize(current_user.user_id, params); let message = { type: "stream", @@ -260,7 +260,7 @@ run_test("insert_local_message streams", ({override}) => { run_test("insert_local_message direct message", ({override}) => { const local_id_float = 102.01; - page_params.user_id = 123; + current_user.user_id = 123; const params = {}; params.realm_users = [ @@ -272,7 +272,7 @@ run_test("insert_local_message direct message", ({override}) => { ]; params.realm_non_active_users = []; params.cross_realm_bots = []; - people.initialize(page_params.user_id, params); + people.initialize(current_user.user_id, params); let render_called = false; let insert_message_called = false; diff --git a/web/tests/example8.test.js b/web/tests/example8.test.js index 3594c63549..1676e995fa 100644 --- a/web/tests/example8.test.js +++ b/web/tests/example8.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); mock_esm("../src/settings_data", { user_can_access_all_other_users: () => true, @@ -78,7 +78,7 @@ run_test("typing_events.render_notifications_for_narrow", ({override, mock_templ const $typing_notifications = $("#typing_notifications"); // Narrow to a group direct message with four users. - override(page_params, "user_id", anna.user_id); + override(current_user, "user_id", anna.user_id); const group = [anna.user_id, vronsky.user_id, levin.user_id, kitty.user_id]; const conversation_key = typing_data.get_direct_message_conversation_key(group); const group_emails = `${anna.email},${vronsky.email},${levin.email},${kitty.email}`; diff --git a/web/tests/i18n.test.js b/web/tests/i18n.test.js index dc395a0b06..ed8dc992b8 100644 --- a/web/tests/i18n.test.js +++ b/web/tests/i18n.test.js @@ -93,10 +93,11 @@ run_test("tr_tag", ({mock_template}) => { settings: {}, }, notification_settings: {}, - page_params: { + current_user: { full_name: "John Doe", delivery_email: "john@zulip.com", }, + page_params: {}, settings_object: {}, settings_label: { desktop_icon_count_display: diff --git a/web/tests/lib/index.js b/web/tests/lib/index.js index 4b8aee61df..f1c710778a 100644 --- a/web/tests/lib/index.js +++ b/web/tests/lib/index.js @@ -122,6 +122,8 @@ test.set_verbose(files.length === 1); require("../../src/billing/page_params"); namespace.mock_esm("../../src/page_params", zpage_params); require("../../src/page_params"); + namespace.mock_esm("../../src/state_data", zpage_params); + require("../../src/state_data"); namespace.mock_esm("../../src/user_settings", zpage_params); require("../../src/user_settings"); namespace.mock_esm("../../src/realm_user_settings_defaults", zpage_params); diff --git a/web/tests/lib/zpage_params.js b/web/tests/lib/zpage_params.js index 4589c0a1d2..6f291cbc58 100644 --- a/web/tests/lib/zpage_params.js +++ b/web/tests/lib/zpage_params.js @@ -1,10 +1,16 @@ "use strict"; +exports.current_user = {}; exports.page_params = {}; exports.realm_user_settings_defaults = {}; exports.user_settings = {}; exports.reset = () => { + for (const field in exports.current_user) { + if (Object.hasOwn(exports.current_user, field)) { + delete exports.current_user[field]; + } + } for (const field in exports.page_params) { if (Object.hasOwn(exports.page_params, field)) { delete exports.page_params[field]; diff --git a/web/tests/message_edit.test.js b/web/tests/message_edit.test.js index 63315d74b5..570e1bef18 100644 --- a/web/tests/message_edit.test.js +++ b/web/tests/message_edit.test.js @@ -4,7 +4,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); page_params.realm_move_messages_within_stream_limit_seconds = 259200; @@ -92,7 +92,7 @@ run_test("is_topic_editable", ({override}) => { }; page_params.realm_allow_message_editing = true; override(settings_data, "user_can_move_messages_to_another_topic", () => true); - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(message_edit.is_topic_editable(message), false); @@ -109,7 +109,7 @@ run_test("is_topic_editable", ({override}) => { override(settings_data, "user_can_move_messages_to_another_topic", () => false); assert.equal(message_edit.is_topic_editable(message), false); - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(message_edit.is_topic_editable(message), false); message.topic = "translated: (no topic)"; @@ -128,7 +128,7 @@ run_test("is_topic_editable", ({override}) => { message.timestamp = current_timestamp - 600000; assert.equal(message_edit.is_topic_editable(message), false); - page_params.is_moderator = true; + current_user.is_moderator = true; assert.equal(message_edit.is_topic_editable(message), true); page_params.realm_allow_message_editing = false; @@ -146,7 +146,7 @@ run_test("is_stream_editable", ({override}) => { }; page_params.realm_allow_message_editing = true; override(settings_data, "user_can_move_messages_between_streams", () => true); - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(message_edit.is_stream_editable(message), false); @@ -163,7 +163,7 @@ run_test("is_stream_editable", ({override}) => { override(settings_data, "user_can_move_messages_between_streams", () => false); assert.equal(message_edit.is_stream_editable(message), false); - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(message_edit.is_stream_editable(message), false); page_params.realm_move_messages_between_streams_limit_seconds = 259200; @@ -175,12 +175,12 @@ run_test("is_stream_editable", ({override}) => { message.timestamp = current_timestamp - 600000; assert.equal(message_edit.is_stream_editable(message), false); - page_params.is_moderator = true; + current_user.is_moderator = true; assert.equal(message_edit.is_stream_editable(message), true); }); run_test("get_deletability", ({override}) => { - page_params.is_admin = true; + current_user.is_admin = true; override(settings_data, "user_can_delete_own_message", () => false); page_params.realm_message_content_delete_limit_seconds = null; const test_user = { @@ -208,7 +208,7 @@ run_test("get_deletability", ({override}) => { assert.equal(message_edit.get_deletability(message), true); // Non-admin can't delete message sent by others - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(message_edit.get_deletability(message), false); // Locally echoed messages are not deletable diff --git a/web/tests/message_list.test.js b/web/tests/message_list.test.js index 54649e07dd..df7d26592e 100644 --- a/web/tests/message_list.test.js +++ b/web/tests/message_list.test.js @@ -7,7 +7,7 @@ const {make_stub} = require("./lib/stub"); const {run_test} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); // These unit tests for web/src/message_list.js emphasize the model-ish // aspects of the MessageList class. We have to stub out a few functions @@ -245,7 +245,7 @@ run_test("last_sent_by_me", () => { ]; list.append(items); - page_params.user_id = 3; + current_user.user_id = 3; // Look for the last message where user_id == 3 (our ID) assert.equal(list.get_last_message_sent_by_me().id, 2); }); diff --git a/web/tests/message_store.test.js b/web/tests/message_store.test.js index fd2c428798..b34e181b4e 100644 --- a/web/tests/message_store.test.js +++ b/web/tests/message_store.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {mock_esm, set_global, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); mock_esm("../src/stream_topic_history", { add_message: noop, @@ -18,7 +18,7 @@ mock_esm("../src/recent_senders", { set_global("document", "document-stub"); page_params.realm_allow_message_editing = true; -page_params.is_admin = true; +current_user.is_admin = true; const util = zrequire("util"); const people = zrequire("people"); diff --git a/web/tests/navbar_alerts.test.js b/web/tests/navbar_alerts.test.js index 2ec557d4de..5f07ea5d2a 100644 --- a/web/tests/navbar_alerts.test.js +++ b/web/tests/navbar_alerts.test.js @@ -6,7 +6,7 @@ const {addDays} = require("date-fns"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); page_params.is_spectator = false; @@ -68,16 +68,16 @@ test("profile_incomplete_alert", ({override}) => { override(timerender, "should_display_profile_incomplete_alert", () => true); // Show alert. - page_params.is_admin = true; + current_user.is_admin = true; page_params.realm_description = "Organization imported from Slack!"; assert.equal(navbar_alerts.check_profile_incomplete(), true); // Avoid showing if the user is not admin. - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(navbar_alerts.check_profile_incomplete(), false); // Avoid showing if the realm description is already updated. - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(navbar_alerts.check_profile_incomplete(), true); page_params.realm_description = "Organization description already set!"; assert.equal(navbar_alerts.check_profile_incomplete(), false); diff --git a/web/tests/notifications.test.js b/web/tests/notifications.test.js index d93ade929f..39311fb4c4 100644 --- a/web/tests/notifications.test.js +++ b/web/tests/notifications.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); mock_esm("../src/spoilers", {hide_spoilers_in_notification() {}}); @@ -50,7 +50,7 @@ user_topics.update_user_topics( function test(label, f) { run_test(label, (helpers) => { - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_users = []; user_settings.enable_followed_topic_desktop_notifications = true; user_settings.enable_followed_topic_audible_notifications = true; diff --git a/web/tests/peer_data.test.js b/web/tests/peer_data.test.js index 211c29556f..7324f4e965 100644 --- a/web/tests/peer_data.test.js +++ b/web/tests/peer_data.test.js @@ -11,15 +11,15 @@ const {strict: assert} = require("assert"); const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const peer_data = zrequire("peer_data"); const people = zrequire("people"); const stream_data = zrequire("stream_data"); -page_params.is_admin = false; +current_user.is_admin = false; page_params.realm_users = []; -page_params.is_guest = false; +current_user.is_guest = false; const me = { email: "me@zulip.com", diff --git a/web/tests/people.test.js b/web/tests/people.test.js index c047731212..87f19efad3 100644 --- a/web/tests/people.test.js +++ b/web/tests/people.test.js @@ -10,7 +10,7 @@ const {$t} = require("./lib/i18n"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const message_user_ids = mock_esm("../src/message_user_ids"); const settings_data = mock_esm("../src/settings_data", { @@ -698,11 +698,11 @@ test_people("set_custom_profile_field_data", () => { test_people("is_current_user_only_owner", () => { const person = people.get_by_email(me.email); person.is_owner = false; - page_params.is_owner = false; + current_user.is_owner = false; assert.ok(!people.is_current_user_only_owner()); person.is_owner = true; - page_params.is_owner = true; + current_user.is_owner = true; assert.ok(people.is_current_user_only_owner()); people.add_active_user(realm_owner); @@ -1237,7 +1237,7 @@ test_people("filter_for_user_settings_search", () => { so that is where we do more thorough testing. This test is just a sanity check for now. */ - page_params.is_admin = false; + current_user.is_admin = false; const fred_smith = {full_name: "Fred Smith"}; const alice_lee = {full_name: "Alice Lee"}; @@ -1256,12 +1256,12 @@ test_people("filter_for_user_settings_search", () => { test_people("matches_user_settings_search", () => { const match = people.matches_user_settings_search; - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(match({email: "fred@example.com"}, "fred"), false); assert.equal(match({full_name: "Fred Smith"}, "fr"), true); - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(match({delivery_email: "fred@example.com"}, "fr"), true); assert.equal( diff --git a/web/tests/reactions.test.js b/web/tests/reactions.test.js index 212a64b760..b25d9ee303 100644 --- a/web/tests/reactions.test.js +++ b/web/tests/reactions.test.js @@ -7,7 +7,7 @@ const {make_stub} = require("./lib/stub"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const alice_user_id = 5; @@ -108,7 +108,7 @@ people.add_active_user(alexus); function test(label, f) { run_test(label, (helpers) => { - page_params.user_id = alice_user_id; + current_user.user_id = alice_user_id; f(helpers); }); } diff --git a/web/tests/search_suggestion.test.js b/web/tests/search_suggestion.test.js index 354890d1bc..b58bfaa67f 100644 --- a/web/tests/search_suggestion.test.js +++ b/web/tests/search_suggestion.test.js @@ -4,7 +4,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const narrow_state = mock_esm("../src/narrow_state"); const stream_topic_history_util = mock_esm("../src/stream_topic_history_util"); @@ -52,7 +52,7 @@ const jeff = { const example_avatar_url = "http://example.com/example.png"; function init() { - page_params.is_admin = true; + current_user.is_admin = true; people.init(); people.add_active_user(bob); diff --git a/web/tests/settings_bots.test.js b/web/tests/settings_bots.test.js index 3251a68f70..319d5ba216 100644 --- a/web/tests/settings_bots.test.js +++ b/web/tests/settings_bots.test.js @@ -4,7 +4,7 @@ const {strict: assert} = require("assert"); const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const bot_data_params = { realm_bots: [ @@ -92,10 +92,10 @@ test("generate_botserverrc_content", () => { }); test("can_create_new_bots", () => { - page_params.is_admin = true; + current_user.is_admin = true; assert.ok(settings_bots.can_create_new_bots()); - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_bot_creation_policy = 1; assert.ok(settings_bots.can_create_new_bots()); diff --git a/web/tests/settings_data.test.js b/web/tests/settings_data.test.js index 0c126d494f..237be32218 100644 --- a/web/tests/settings_data.test.js +++ b/web/tests/settings_data.test.js @@ -4,7 +4,7 @@ const {strict: assert} = require("assert"); const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const settings_data = zrequire("settings_data"); const settings_config = zrequire("settings_config"); @@ -27,10 +27,10 @@ const isaac = { run_test("user_can_change_email", () => { const can_change_email = settings_data.user_can_change_email; - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(can_change_email(), true); - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_email_changes_disabled = true; assert.equal(can_change_email(), false); @@ -41,10 +41,10 @@ run_test("user_can_change_email", () => { run_test("user_can_change_name", () => { const can_change_name = settings_data.user_can_change_name; - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(can_change_name(), true); - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_name_changes_disabled = true; page_params.server_name_changes_disabled = false; assert.equal(can_change_name(), false); @@ -61,10 +61,10 @@ run_test("user_can_change_name", () => { run_test("user_can_change_avatar", () => { const can_change_avatar = settings_data.user_can_change_avatar; - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(can_change_avatar(), true); - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_avatar_changes_disabled = true; page_params.server_avatar_changes_disabled = false; assert.equal(can_change_avatar(), false); @@ -81,44 +81,44 @@ run_test("user_can_change_avatar", () => { run_test("user_can_change_logo", () => { const can_change_logo = settings_data.user_can_change_logo; - page_params.is_admin = true; + current_user.is_admin = true; page_params.zulip_plan_is_not_limited = true; assert.equal(can_change_logo(), true); - page_params.is_admin = false; + current_user.is_admin = false; page_params.zulip_plan_is_not_limited = false; assert.equal(can_change_logo(), false); - page_params.is_admin = true; + current_user.is_admin = true; page_params.zulip_plan_is_not_limited = false; assert.equal(can_change_logo(), false); - page_params.is_admin = false; + current_user.is_admin = false; page_params.zulip_plan_is_not_limited = true; assert.equal(can_change_logo(), false); }); function test_policy(label, policy, validation_func) { run_test(label, () => { - page_params.is_admin = true; + current_user.is_admin = true; page_params[policy] = settings_config.common_policy_values.by_admins_only.code; assert.equal(validation_func(), true); - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(validation_func(), false); - page_params.is_moderator = true; + current_user.is_moderator = true; page_params[policy] = settings_config.common_policy_values.by_moderators_only.code; assert.equal(validation_func(), true); - page_params.is_moderator = false; + current_user.is_moderator = false; assert.equal(validation_func(), false); - page_params.is_guest = true; + current_user.is_guest = true; page_params[policy] = settings_config.common_policy_values.by_members.code; assert.equal(validation_func(), false); - page_params.is_guest = false; + current_user.is_guest = false; assert.equal(validation_func(), true); page_params.is_spectator = true; @@ -129,7 +129,7 @@ function test_policy(label, policy, validation_func) { assert.equal(validation_func(), true); page_params[policy] = settings_config.common_policy_values.by_full_members.code; - page_params.user_id = 30; + current_user.user_id = 30; isaac.date_joined = new Date(Date.now()); settings_data.initialize(isaac.date_joined); page_params.realm_waiting_period_threshold = 10; @@ -179,32 +179,32 @@ test_policy( function test_message_policy(label, policy, validation_func) { run_test(label, () => { - page_params.is_admin = true; + current_user.is_admin = true; page_params[policy] = settings_config.common_message_policy_values.by_admins_only.code; assert.equal(validation_func(), true); - page_params.is_admin = false; - page_params.is_moderator = true; + current_user.is_admin = false; + current_user.is_moderator = true; assert.equal(validation_func(), false); page_params[policy] = settings_config.common_message_policy_values.by_moderators_only.code; assert.equal(validation_func(), true); - page_params.is_moderator = false; + current_user.is_moderator = false; assert.equal(validation_func(), false); - page_params.is_guest = true; + current_user.is_guest = true; page_params[policy] = settings_config.common_message_policy_values.by_everyone.code; assert.equal(validation_func(), true); page_params[policy] = settings_config.common_message_policy_values.by_members.code; assert.equal(validation_func(), false); - page_params.is_guest = false; + current_user.is_guest = false; assert.equal(validation_func(), true); page_params[policy] = settings_config.common_message_policy_values.by_full_members.code; - page_params.user_id = 30; + current_user.user_id = 30; isaac.date_joined = new Date(Date.now()); page_params.realm_waiting_period_threshold = 10; settings_data.initialize(isaac.date_joined); @@ -223,15 +223,15 @@ test_message_policy( ); run_test("user_can_move_messages_to_another_topic_nobody_case", () => { - page_params.is_admin = true; - page_params.is_guest = false; + current_user.is_admin = true; + current_user.is_guest = false; page_params.realm_edit_topic_policy = settings_config.edit_topic_policy_values.nobody.code; assert.equal(settings_data.user_can_move_messages_to_another_topic(), false); }); run_test("user_can_move_messages_between_streams_nobody_case", () => { - page_params.is_admin = true; - page_params.is_guest = false; + current_user.is_admin = true; + current_user.is_guest = false; page_params.realm_move_messages_between_streams_policy = settings_config.move_messages_between_streams_policy_values.nobody.code; assert.equal(settings_data.user_can_move_messages_between_streams(), false); @@ -266,15 +266,15 @@ run_test("using_dark_theme", () => { }); run_test("user_can_invite_others_to_realm_nobody_case", () => { - page_params.is_admin = true; - page_params.is_guest = false; + current_user.is_admin = true; + current_user.is_guest = false; page_params.realm_invite_to_realm_policy = settings_config.email_invite_to_realm_policy_values.nobody.code; assert.equal(settings_data.user_can_invite_users_by_email(), false); }); run_test("user_can_create_web_public_streams", () => { - page_params.is_owner = true; + current_user.is_owner = true; page_params.server_web_public_streams_enabled = true; page_params.realm_enable_spectator_access = true; page_params.realm_create_web_public_stream_policy = @@ -299,37 +299,37 @@ run_test("user_can_create_web_public_streams", () => { page_params.realm_enable_spectator_access = true; page_params.server_web_public_streams_enabled = true; - page_params.is_owner = false; - page_params.is_admin = true; + current_user.is_owner = false; + current_user.is_admin = true; assert.equal(settings_data.user_can_create_web_public_streams(), false); page_params.realm_create_web_public_stream_policy = settings_config.create_web_public_stream_policy_values.by_admins_only.code; assert.equal(settings_data.user_can_create_web_public_streams(), true); - page_params.is_admin = false; - page_params.is_moderator = true; + current_user.is_admin = false; + current_user.is_moderator = true; assert.equal(settings_data.user_can_create_web_public_streams(), false); page_params.realm_create_web_public_stream_policy = settings_config.create_web_public_stream_policy_values.by_moderators_only.code; assert.equal(settings_data.user_can_create_web_public_streams(), true); - page_params.is_moderator = false; + current_user.is_moderator = false; assert.equal(settings_data.user_can_create_web_public_streams(), false); }); run_test("user_email_not_configured", () => { const user_email_not_configured = settings_data.user_email_not_configured; - page_params.is_owner = false; + current_user.is_owner = false; assert.equal(user_email_not_configured(), false); - page_params.is_owner = true; - page_params.delivery_email = ""; + current_user.is_owner = true; + current_user.delivery_email = ""; assert.equal(user_email_not_configured(), true); - page_params.delivery_email = "name@example.com"; + current_user.delivery_email = "name@example.com"; assert.equal(user_email_not_configured(), false); }); @@ -358,17 +358,17 @@ run_test("user_can_create_multiuse_invite", () => { assert.equal(settings_data.user_can_create_multiuse_invite(), false); page_params.realm_create_multiuse_invite_group = 1; - page_params.user_id = admin_user_id; + current_user.user_id = admin_user_id; assert.equal(settings_data.user_can_create_multiuse_invite(), true); - page_params.user_id = moderator_user_id; + current_user.user_id = moderator_user_id; assert.equal(settings_data.user_can_create_multiuse_invite(), false); page_params.realm_create_multiuse_invite_group = 2; - page_params.user_id = moderator_user_id; + current_user.user_id = moderator_user_id; assert.equal(settings_data.user_can_create_multiuse_invite(), true); - page_params.user_id = member_user_id; + current_user.user_id = member_user_id; assert.equal(settings_data.user_can_create_multiuse_invite(), false); }); @@ -386,21 +386,21 @@ run_test("can_edit_user_group", () => { realm_user_groups: [students], }); - delete page_params.user_id; + delete current_user.user_id; assert.ok(!settings_data.can_edit_user_group(students.id)); - page_params.user_id = 3; - page_params.is_guest = true; + current_user.user_id = 3; + current_user.is_guest = true; assert.ok(!settings_data.can_edit_user_group(students.id)); - page_params.is_guest = false; - page_params.is_moderator = true; + current_user.is_guest = false; + current_user.is_moderator = true; assert.ok(settings_data.can_edit_user_group(students.id)); - page_params.is_moderator = false; + current_user.is_moderator = false; assert.ok(!settings_data.can_edit_user_group(students.id)); - page_params.user_id = 2; + current_user.user_id = 2; page_params.realm_waiting_period_threshold = 0; assert.ok(settings_data.can_edit_user_group(students.id)); }); @@ -447,13 +447,13 @@ run_test("user_can_access_all_other_users", () => { page_params.realm_can_access_all_users_group = members.id; // Test spectators case. - page_params.user_id = undefined; + current_user.user_id = undefined; assert.ok(settings_data.user_can_access_all_other_users()); - page_params.user_id = member_user_id; + current_user.user_id = member_user_id; assert.ok(settings_data.user_can_access_all_other_users()); - page_params.user_id = guest_user_id; + current_user.user_id = guest_user_id; assert.ok(!settings_data.user_can_access_all_other_users()); page_params.realm_can_access_all_users_group = everyone.id; diff --git a/web/tests/settings_org.test.js b/web/tests/settings_org.test.js index 612fe4db58..fd27160f27 100644 --- a/web/tests/settings_org.test.js +++ b/web/tests/settings_org.test.js @@ -7,7 +7,7 @@ const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const realm_icon = mock_esm("../src/realm_icon"); @@ -29,7 +29,7 @@ const dropdown_widget = zrequire("dropdown_widget"); function test(label, f) { run_test(label, (helpers) => { $("#realm-icon-upload-widget .upload-spinner-background").css = noop; - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_domains = [ {domain: "example.com", allow_subdomains: true}, {domain: "example.org", allow_subdomains: false}, @@ -634,7 +634,7 @@ test("set_up", ({override, override_rewire}) => { // TEST set_up() here, but this mostly just allows us to // get access to the click handlers. - override(page_params, "is_owner", true); + override(current_user, "is_owner", true); settings_org.set_up(); test_submit_settings_form( @@ -770,7 +770,7 @@ test("test get_sorted_options_list", () => { }); test("misc", () => { - page_params.is_admin = false; + current_user.is_admin = false; $("#user-avatar-upload-widget").length = 1; $("#user_details_section").length = 1; @@ -824,7 +824,7 @@ test("misc", () => { assert.ok($("#user-avatar-upload-widget .image_upload_button").hasClass("hide")); // If organization admin, these UI elements are never disabled. - page_params.is_admin = true; + current_user.is_admin = true; settings_account.update_name_change_display(); assert.ok(!$("#full_name").prop("disabled")); assert.ok(!$("#full_name_input_container").hasClass("disabled_setting_tooltip")); diff --git a/web/tests/settings_profile_fields.test.js b/web/tests/settings_profile_fields.test.js index 21884c38da..d7a719261b 100644 --- a/web/tests/settings_profile_fields.test.js +++ b/web/tests/settings_profile_fields.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user, page_params} = require("./lib/zpage_params"); const loading = mock_esm("../src/loading"); @@ -53,7 +53,7 @@ function test_populate(opts, template_data) { const fields_data = opts.fields_data; page_params.custom_profile_field_types = custom_profile_field_types; - page_params.is_admin = opts.is_admin; + current_user.is_admin = opts.is_admin; const $table = $("#admin_profile_fields_table"); const $rows = $.create("rows"); const $form = $.create("forms"); diff --git a/web/tests/stream_create_subscribers_data.test.js b/web/tests/stream_create_subscribers_data.test.js index 93aa2ba468..98ffc3dfa9 100644 --- a/web/tests/stream_create_subscribers_data.test.js +++ b/web/tests/stream_create_subscribers_data.test.js @@ -4,7 +4,7 @@ const {strict: assert} = require("assert"); const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); const people = zrequire("people"); const stream_create_subscribers_data = zrequire("stream_create_subscribers_data"); @@ -35,13 +35,13 @@ const test_user103 = { function test(label, f) { run_test(label, (helpers) => { - page_params.is_admin = false; + current_user.is_admin = false; people.init(); people.add_active_user(me); people.add_active_user(test_user101); people.add_active_user(test_user102); people.add_active_user(test_user103); - page_params.user_id = me.user_id; + current_user.user_id = me.user_id; people.initialize_current_user(me.user_id); f(helpers); }); @@ -71,10 +71,10 @@ test("basics", () => { }); test("must_be_subscribed", () => { - page_params.is_admin = false; + current_user.is_admin = false; assert.ok(stream_create_subscribers_data.must_be_subscribed(me.user_id)); assert.ok(!stream_create_subscribers_data.must_be_subscribed(test_user101.user_id)); - page_params.is_admin = true; + current_user.is_admin = true; assert.ok(!stream_create_subscribers_data.must_be_subscribed(me.user_id)); assert.ok(!stream_create_subscribers_data.must_be_subscribed(test_user101.user_id)); }); diff --git a/web/tests/stream_data.test.js b/web/tests/stream_data.test.js index f5f0fd6ebe..c3f2124771 100644 --- a/web/tests/stream_data.test.js +++ b/web/tests/stream_data.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); // TODO: Remove after we enable support for // web_public_streams in production. @@ -51,9 +51,9 @@ const moderators_group = { function test(label, f) { run_test(label, (helpers) => { - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_users = []; - page_params.is_guest = false; + current_user.is_guest = false; people.init(); people.add_active_user(me); people.initialize_current_user(me.user_id); @@ -273,12 +273,12 @@ test("get_streams_for_user", () => { ]); assert.deepEqual(stream_data.get_streams_for_user(test_user.user_id).can_subscribe, []); // Verify can subscribe if we're an administrator. - page_params.is_admin = true; + current_user.is_admin = true; assert.deepEqual(stream_data.get_streams_for_user(test_user.user_id).can_subscribe, [ world, errors, ]); - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_invite_to_stream_policy = settings_config.common_policy_values.by_members.code; @@ -341,7 +341,7 @@ test("admin_options", () => { } // non-admins can't do anything - page_params.is_admin = false; + current_user.is_admin = false; let sub = make_sub(); assert.ok(!is_realm_admin(sub)); assert.ok(!can_change_stream_permissions(sub)); @@ -350,7 +350,7 @@ test("admin_options", () => { assert.equal(sub.color, "blue"); // the remaining cases are for admin users - page_params.is_admin = true; + current_user.is_admin = true; // admins can make public streams become private sub = make_sub(); @@ -443,7 +443,7 @@ test("stream_settings", () => { // For guest user only retrieve subscribed streams sub_rows = stream_settings_data.get_updated_unsorted_subs(); assert.equal(sub_rows.length, 3); - page_params.is_guest = true; + current_user.is_guest = true; sub_rows = stream_settings_data.get_updated_unsorted_subs(); assert.equal(sub_rows[0].name, "c"); assert.equal(sub_rows[1].name, "a"); @@ -935,23 +935,23 @@ test("can_post_messages_in_stream", () => { history_public_to_subscribers: false, stream_post_policy: settings_config.stream_post_policy_values.admins.code, }; - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(stream_data.can_post_messages_in_stream(social), false); - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(stream_data.can_post_messages_in_stream(social), true); social.stream_post_policy = settings_config.stream_post_policy_values.moderators.code; - page_params.is_moderator = false; - page_params.is_admin = false; + current_user.is_moderator = false; + current_user.is_admin = false; assert.equal(stream_data.can_post_messages_in_stream(social), false); - page_params.is_moderator = true; + current_user.is_moderator = true; assert.equal(stream_data.can_post_messages_in_stream(social), true); social.stream_post_policy = settings_config.stream_post_policy_values.non_new_members.code; - page_params.is_moderator = false; + current_user.is_moderator = false; me.date_joined = new Date(Date.now()); page_params.realm_waiting_period_threshold = 10; assert.equal(stream_data.can_post_messages_in_stream(social), false); @@ -959,7 +959,7 @@ test("can_post_messages_in_stream", () => { me.date_joined = new Date(Date.now() - 20 * 86400000); assert.equal(stream_data.can_post_messages_in_stream(social), true); - page_params.is_guest = true; + current_user.is_guest = true; assert.equal(stream_data.can_post_messages_in_stream(social), false); social.stream_post_policy = settings_config.stream_post_policy_values.everyone.code; @@ -1037,17 +1037,17 @@ test("can_unsubscribe_others", () => { // Even with the nobody system group, admins can still unsubscribe others. sub.can_remove_subscribers_group = nobody.id; - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(stream_data.can_unsubscribe_others(sub), true); - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(stream_data.can_unsubscribe_others(sub), false); // This isn't a real state, but we want coverage on !can_view_subscribers. sub.subscribed = false; sub.invite_only = true; - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(stream_data.can_unsubscribe_others(sub), true); - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(stream_data.can_unsubscribe_others(sub), false); }); @@ -1161,10 +1161,10 @@ test("can_access_stream_email", () => { invite_only: true, history_public_to_subscribers: false, }; - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(stream_data.can_access_stream_email(social), true); - page_params.is_admin = true; + current_user.is_admin = true; assert.equal(stream_data.can_access_stream_email(social), true); social.subscribed = false; @@ -1173,10 +1173,10 @@ test("can_access_stream_email", () => { social.invite_only = false; assert.equal(stream_data.can_access_stream_email(social), true); - page_params.is_admin = false; + current_user.is_admin = false; assert.equal(stream_data.can_access_stream_email(social), true); - page_params.is_guest = true; + current_user.is_guest = true; assert.equal(stream_data.can_access_stream_email(social), false); social.subscribed = true; diff --git a/web/tests/stream_list.test.js b/web/tests/stream_list.test.js index 3f9dc04d6d..33b1b6cc9d 100644 --- a/web/tests/stream_list.test.js +++ b/web/tests/stream_list.test.js @@ -5,11 +5,11 @@ const {strict: assert} = require("assert"); const {mock_esm, set_global, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); set_global("document", "document-stub"); -page_params.is_admin = false; +current_user.is_admin = false; page_params.realm_users = []; // We use this with override. diff --git a/web/tests/transmit.test.js b/web/tests/transmit.test.js index 6ac12aee27..4e76c59c74 100644 --- a/web/tests/transmit.test.js +++ b/web/tests/transmit.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); const channel = mock_esm("../src/channel"); const reload = mock_esm("../src/reload"); @@ -150,7 +150,7 @@ run_test("reply_message_stream", ({override}) => { send_message_args = data; }); - page_params.user_id = 44; + current_user.user_id = 44; server_events.queue_id = 66; sent_messages.get_new_local_id = () => "99"; @@ -191,7 +191,7 @@ run_test("reply_message_private", ({override}) => { send_message_args = data; }); - page_params.user_id = 155; + current_user.user_id = 155; server_events.queue_id = 177; sent_messages.get_new_local_id = () => "199"; diff --git a/web/tests/typeahead_helper.test.js b/web/tests/typeahead_helper.test.js index 938f6d8f8f..014abf451c 100644 --- a/web/tests/typeahead_helper.test.js +++ b/web/tests/typeahead_helper.test.js @@ -4,7 +4,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); -const {page_params, user_settings} = require("./lib/zpage_params"); +const {current_user, page_params, user_settings} = require("./lib/zpage_params"); const stream_topic_history = mock_esm("../src/stream_topic_history"); @@ -116,7 +116,7 @@ function test(label, f) { recent_senders.clear_for_testing(); peer_data.clear_for_testing(); people.clear_recipient_counts_for_testing(); - page_params.is_admin = false; + current_user.is_admin = false; page_params.realm_is_zephyr_mirror_realm = false; f(helpers); diff --git a/web/tests/typing_events.test.js b/web/tests/typing_events.test.js index ce9c4163e8..cec05e3786 100644 --- a/web/tests/typing_events.test.js +++ b/web/tests/typing_events.test.js @@ -5,7 +5,7 @@ const {strict: assert} = require("assert"); const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test} = require("./lib/test"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); const settings_data = mock_esm("../src/settings_data"); @@ -45,7 +45,7 @@ people.add_active_user(levin); people.add_active_user(kitty); run_test("render_notifications_for_narrow", ({override, mock_template}) => { - override(page_params, "user_id", anna.user_id); + override(current_user, "user_id", anna.user_id); override(settings_data, "user_can_access_all_other_users", () => true); const group = [anna.user_id, vronsky.user_id, levin.user_id, kitty.user_id]; const conversation_key = typing_data.get_direct_message_conversation_key(group); diff --git a/web/tests/user_events.test.js b/web/tests/user_events.test.js index 0efb9760e9..c221abdeac 100644 --- a/web/tests/user_events.test.js +++ b/web/tests/user_events.test.js @@ -6,7 +6,7 @@ const {mock_esm, zrequire} = require("./lib/namespace"); const {run_test, noop} = require("./lib/test"); const blueslip = require("./lib/zblueslip"); const $ = require("./lib/zjquery"); -const {page_params} = require("./lib/zpage_params"); +const {current_user} = require("./lib/zpage_params"); const message_live_update = mock_esm("../src/message_live_update"); const settings_account = mock_esm("../src/settings_account", { @@ -49,7 +49,7 @@ mock_esm("../src/settings_streams", { maybe_disable_widgets() {}, }); -page_params.is_admin = true; +current_user.is_admin = true; const people = zrequire("people"); const settings_config = zrequire("settings_config"); @@ -127,21 +127,21 @@ run_test("updates", () => { person = people.get_by_email(me.email); assert.ok(person.is_billing_admin); assert.equal(person.role, settings_config.user_role_values.member.code); - assert.ok(page_params.is_billing_admin); + assert.ok(current_user.is_billing_admin); user_events.update_person({user_id: me.user_id, is_billing_admin: false}); person = people.get_by_email(me.email); assert.equal(person.user_id, me.user_id); assert.ok(!person.is_billing_admin); assert.equal(person.role, settings_config.user_role_values.member.code); - assert.ok(!page_params.is_billing_admin); + assert.ok(!current_user.is_billing_admin); user_events.update_person({user_id: isaac.user_id, is_billing_admin: false}); person = people.get_by_email(isaac.email); assert.equal(person.user_id, isaac.user_id); assert.ok(!person.is_billing_admin); assert.equal(person.role, settings_config.user_role_values.owner.code); - assert.ok(!page_params.is_billing_admin); + assert.ok(!current_user.is_billing_admin); let user_id; let full_name; @@ -161,7 +161,7 @@ run_test("updates", () => { user_id: me.user_id, role: settings_config.user_role_values.member.code, }); - assert.ok(!page_params.is_admin); + assert.ok(!current_user.is_admin); user_events.update_person({user_id: me.user_id, full_name: "Me V2"}); assert.equal(people.my_full_name(), "Me V2");