mirror of https://github.com/zulip/zulip.git
web: Qualify global uses of location and history.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
97fd5b8c6f
commit
fa91a4493c
|
@ -133,7 +133,7 @@
|
||||||
<script nonce="{{ csp_nonce }}">
|
<script nonce="{{ csp_nonce }}">
|
||||||
document.addEventListener('DOMContentLoaded', function () {
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
function reload() {
|
function reload() {
|
||||||
location.reload(true);
|
window.location.reload(true);
|
||||||
}
|
}
|
||||||
document.querySelectorAll('.reload-lnk').forEach(lnk => lnk.addEventListener('click', reload));
|
document.querySelectorAll('.reload-lnk').forEach(lnk => lnk.addEventListener('click', reload));
|
||||||
});
|
});
|
||||||
|
|
|
@ -87,10 +87,14 @@ export function create_ajax_request(
|
||||||
$(form_error).hide();
|
$(form_error).hide();
|
||||||
$(form_success).show();
|
$(form_success).show();
|
||||||
if (["autopay", "invoice"].includes(form_name)) {
|
if (["autopay", "invoice"].includes(form_name)) {
|
||||||
if ("pushState" in history) {
|
if ("pushState" in window.history) {
|
||||||
history.pushState("", document.title, location.pathname + location.search);
|
window.history.pushState(
|
||||||
|
"",
|
||||||
|
document.title,
|
||||||
|
window.location.pathname + window.location.search,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
location.hash = "";
|
window.location.hash = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
success_callback(response);
|
success_callback(response);
|
||||||
|
|
|
@ -111,8 +111,8 @@ $(() => {
|
||||||
// form otherwise the sponsorship pending message is partially
|
// form otherwise the sponsorship pending message is partially
|
||||||
// hidden due to browser preserving scroll position.
|
// hidden due to browser preserving scroll position.
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/History/scrollRestoration
|
// https://developer.mozilla.org/en-US/docs/Web/API/History/scrollRestoration
|
||||||
if (history.scrollRestoration) {
|
if (window.history.scrollRestoration) {
|
||||||
history.scrollRestoration = "manual";
|
window.history.scrollRestoration = "manual";
|
||||||
}
|
}
|
||||||
|
|
||||||
initialize();
|
initialize();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// TODO: Rewrite this module to use history.pushState.
|
// TODO: Rewrite this module to use window.history.pushState.
|
||||||
|
|
||||||
import * as blueslip from "./blueslip";
|
import * as blueslip from "./blueslip";
|
||||||
import * as hash_parser from "./hash_parser";
|
import * as hash_parser from "./hash_parser";
|
||||||
|
@ -129,10 +129,10 @@ export function set_hash(hash: string): void {
|
||||||
// Avoid adding duplicate entries in browser history.
|
// Avoid adding duplicate entries in browser history.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (history.pushState) {
|
if (window.history.pushState) {
|
||||||
const url = get_full_url(hash);
|
const url = get_full_url(hash);
|
||||||
try {
|
try {
|
||||||
history.pushState(null, "", url);
|
window.history.pushState(null, "", url);
|
||||||
update_web_public_hash(hash);
|
update_web_public_hash(hash);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error instanceof TypeError) {
|
if (error instanceof TypeError) {
|
||||||
|
@ -163,12 +163,12 @@ type StateData = {
|
||||||
|
|
||||||
export function update_current_history_state_data(new_data: StateData): void {
|
export function update_current_history_state_data(new_data: StateData): void {
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
||||||
const current_state = history.state as StateData | null;
|
const current_state = window.history.state as StateData | null;
|
||||||
const current_state_data = {
|
const current_state_data = {
|
||||||
narrow_pointer: current_state?.narrow_pointer,
|
narrow_pointer: current_state?.narrow_pointer,
|
||||||
narrow_offset: current_state?.narrow_offset,
|
narrow_offset: current_state?.narrow_offset,
|
||||||
show_more_topics: current_state?.show_more_topics,
|
show_more_topics: current_state?.show_more_topics,
|
||||||
};
|
};
|
||||||
const state_data = {...current_state_data, ...new_data};
|
const state_data = {...current_state_data, ...new_data};
|
||||||
history.replaceState(state_data, "", window.location.href);
|
window.history.replaceState(state_data, "", window.location.href);
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,8 +60,8 @@ function show_all_message_view() {
|
||||||
message_view.show([{operator: "in", operand: "home"}], {
|
message_view.show([{operator: "in", operand: "home"}], {
|
||||||
trigger: "hashchange",
|
trigger: "hashchange",
|
||||||
change_hash: false,
|
change_hash: false,
|
||||||
then_select_id: history.state?.narrow_pointer,
|
then_select_id: window.history.state?.narrow_pointer,
|
||||||
then_select_offset: history.state?.narrow_offset,
|
then_select_offset: window.history.state?.narrow_offset,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,7 +192,7 @@ function do_hashchange_normal(from_reload) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const data_for_hash = history.state;
|
const data_for_hash = window.history.state;
|
||||||
if (data_for_hash) {
|
if (data_for_hash) {
|
||||||
narrow_opts.then_select_id = data_for_hash.narrow_pointer;
|
narrow_opts.then_select_id = data_for_hash.narrow_pointer;
|
||||||
narrow_opts.then_select_offset = data_for_hash.narrow_offset;
|
narrow_opts.then_select_offset = data_for_hash.narrow_offset;
|
||||||
|
@ -281,7 +281,7 @@ function do_hashchange_overlay(old_hash) {
|
||||||
if (base === "organization") {
|
if (base === "organization") {
|
||||||
settings_panel_object = settings_panel_menu.org_settings;
|
settings_panel_object = settings_panel_menu.org_settings;
|
||||||
}
|
}
|
||||||
history.replaceState(
|
window.history.replaceState(
|
||||||
null,
|
null,
|
||||||
"",
|
"",
|
||||||
browser_history.get_full_url(base + "/" + settings_panel_object.current_tab()),
|
browser_history.get_full_url(base + "/" + settings_panel_object.current_tab()),
|
||||||
|
@ -300,7 +300,7 @@ function do_hashchange_overlay(old_hash) {
|
||||||
// not match the window.location.hash, then we also reset the
|
// not match the window.location.hash, then we also reset the
|
||||||
// base string we're tracking for the hash.
|
// base string we're tracking for the hash.
|
||||||
if (valid_hash !== window.location.hash) {
|
if (valid_hash !== window.location.hash) {
|
||||||
history.replaceState(null, "", browser_history.get_full_url(valid_hash));
|
window.history.replaceState(null, "", browser_history.get_full_url(valid_hash));
|
||||||
section = hash_parser.get_current_hash_section();
|
section = hash_parser.get_current_hash_section();
|
||||||
base = hash_parser.get_current_hash_category();
|
base = hash_parser.get_current_hash_category();
|
||||||
}
|
}
|
||||||
|
@ -309,7 +309,7 @@ function do_hashchange_overlay(old_hash) {
|
||||||
if (base === "groups") {
|
if (base === "groups") {
|
||||||
const valid_hash = hash_util.validate_group_settings_hash(window.location.hash);
|
const valid_hash = hash_util.validate_group_settings_hash(window.location.hash);
|
||||||
if (valid_hash !== window.location.hash) {
|
if (valid_hash !== window.location.hash) {
|
||||||
history.replaceState(null, "", browser_history.get_full_url(valid_hash));
|
window.history.replaceState(null, "", browser_history.get_full_url(valid_hash));
|
||||||
section = hash_parser.get_current_hash_section();
|
section = hash_parser.get_current_hash_section();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,7 +174,7 @@ function create_and_update_message_list(filter, id_info, opts) {
|
||||||
// workflow we have which calls `message_view.show` after hash is updated.
|
// workflow we have which calls `message_view.show` after hash is updated.
|
||||||
if (opts.change_hash) {
|
if (opts.change_hash) {
|
||||||
update_hash_to_match_filter(filter, opts.trigger);
|
update_hash_to_match_filter(filter, opts.trigger);
|
||||||
opts.show_more_topics = history.state?.show_more_topics ?? false;
|
opts.show_more_topics = window.history.state?.show_more_topics ?? false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show the new set of messages. It is important to set message_lists.current to
|
// Show the new set of messages. It is important to set message_lists.current to
|
||||||
|
|
|
@ -762,7 +762,7 @@ export function exclude_me_from_string(user_ids_string: string): string {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function format_small_avatar_url(raw_url: string): string {
|
export function format_small_avatar_url(raw_url: string): string {
|
||||||
const url = new URL(raw_url, location.origin);
|
const url = new URL(raw_url, window.location.origin);
|
||||||
url.search += (url.search ? "&" : "") + "s=50";
|
url.search += (url.search ? "&" : "") + "s=50";
|
||||||
return url.href;
|
return url.href;
|
||||||
}
|
}
|
||||||
|
@ -843,7 +843,7 @@ export function small_avatar_url_for_person(person: User): string {
|
||||||
function medium_gravatar_url_for_email(email: string): string {
|
function medium_gravatar_url_for_email(email: string): string {
|
||||||
const hash = md5(email.toLowerCase());
|
const hash = md5(email.toLowerCase());
|
||||||
const avatar_url = "https://secure.gravatar.com/avatar/" + hash + "?d=identicon";
|
const avatar_url = "https://secure.gravatar.com/avatar/" + hash + "?d=identicon";
|
||||||
const url = new URL(avatar_url, location.origin);
|
const url = new URL(avatar_url, window.location.origin);
|
||||||
url.search += (url.search ? "&" : "") + "s=500";
|
url.search += (url.search ? "&" : "") + "s=500";
|
||||||
return url.href;
|
return url.href;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ $(() => {
|
||||||
// This code will be executed when the user visits /login and
|
// This code will be executed when the user visits /login and
|
||||||
// dev_login.html is rendered.
|
// dev_login.html is rendered.
|
||||||
if ($("[data-page-id='dev-login']").length > 0 && window.location.hash.startsWith("#")) {
|
if ($("[data-page-id='dev-login']").length > 0 && window.location.hash.startsWith("#")) {
|
||||||
/* We append the location.hash to the input field with name next so that URL can be
|
/* We append the window.location.hash to the input field with name next so that URL can be
|
||||||
preserved after user is logged in. See this:
|
preserved after user is logged in. See this:
|
||||||
https://stackoverflow.com/questions/5283395/url-hash-is-persisting-between-redirects */
|
https://stackoverflow.com/questions/5283395/url-hash-is-persisting-between-redirects */
|
||||||
$("input[name='next']").each(function () {
|
$("input[name='next']").each(function () {
|
||||||
|
|
|
@ -207,7 +207,7 @@ $(document).on("click", ".pricing-tab", function () {
|
||||||
$(".subheader-filler").attr("colspan", plans_columns_count);
|
$(".subheader-filler").attr("colspan", plans_columns_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
history.pushState(null, null, `#${id}`);
|
window.history.pushState(null, null, `#${id}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on("click", ".comparison-tab", function () {
|
$(document).on("click", ".comparison-tab", function () {
|
||||||
|
|
|
@ -10,11 +10,11 @@ import * as message_view from "./message_view";
|
||||||
// done before the first call to get_events
|
// done before the first call to get_events
|
||||||
|
|
||||||
export function initialize() {
|
export function initialize() {
|
||||||
// location.hash should be e.g. `#reload:12345123412312`
|
// window.location.hash should be e.g. `#reload:12345123412312`
|
||||||
if (!location.hash.startsWith("#reload:")) {
|
if (!window.location.hash.startsWith("#reload:")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const hash_fragment = location.hash.slice("#".length);
|
const hash_fragment = window.location.hash.slice("#".length);
|
||||||
const trigger = "reload";
|
const trigger = "reload";
|
||||||
|
|
||||||
// Using the token, recover the saved pre-reload data from local
|
// Using the token, recover the saved pre-reload data from local
|
||||||
|
|
|
@ -90,7 +90,7 @@ if (page_params.server_sentry_dsn) {
|
||||||
return {
|
return {
|
||||||
...context,
|
...context,
|
||||||
metadata: {source: "custom"},
|
metadata: {source: "custom"},
|
||||||
name: normalize_path(location.pathname, sentry_key === "www"),
|
name: normalize_path(window.location.pathname, sentry_key === "www"),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
shouldCreateSpanForRequest,
|
shouldCreateSpanForRequest,
|
||||||
|
|
|
@ -62,6 +62,6 @@ export function toggle_org_setting_collapse() {
|
||||||
// If current tab is about to be collapsed, go to default tab.
|
// If current tab is about to be collapsed, go to default tab.
|
||||||
const $current_tab = $(".org-settings-list .active");
|
const $current_tab = $(".org-settings-list .active");
|
||||||
if ($current_tab.hasClass("hide-org-settings")) {
|
if ($current_tab.hasClass("hide-org-settings")) {
|
||||||
$(location).attr("href", "/#organization/organization-profile");
|
window.location.href = "/#organization/organization-profile";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue