diff options
author | metamuffin <metamuffin@disroot.org> | 2023-12-19 10:13:44 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-12-19 10:13:44 +0100 |
commit | 349f66ec59e9fcdd21959523ecabd16e5b2e471f (patch) | |
tree | f77bbe8f28553ccab36ca6e0dda97dccc6e1f629 | |
parent | b5972f8fa3ddad874d8ccf2441cb043c54c2fd48 (diff) | |
download | jellything-349f66ec59e9fcdd21959523ecabd16e5b2e471f.tar jellything-349f66ec59e9fcdd21959523ecabd16e5b2e471f.tar.bz2 jellything-349f66ec59e9fcdd21959523ecabd16e5b2e471f.tar.zst |
fix double-error when navigating during error
-rw-r--r-- | web/script/transition.ts | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/web/script/transition.ts b/web/script/transition.ts index 6c7df14..04f19f9 100644 --- a/web/script/transition.ts +++ b/web/script/transition.ts @@ -39,8 +39,8 @@ async function transition_to(href: string, back?: boolean) { } function show_error(mesg: string) { - if (spinner_timeout) clearTimeout(spinner_timeout) - if (spinner_element) spinner_element.remove() + clear_spinner() + disable_transition = true document.body.append(e("span", { class: "jst-error" }, mesg)) } @@ -58,15 +58,20 @@ function prepare_load(href: string, back?: boolean) { } const [head, body] = rt.split("<head>")[1].split("</head>") if (!back) window.history.pushState({}, "", href) + clear_spinner() document.head.innerHTML = head document.body.outerHTML = body - spinner_timeout = spinner_element = undefined globalThis.dispatchEvent(new Event("DOMContentLoaded")) fade(true) } } let spinner_timeout: number | undefined, spinner_element: HTMLElement | undefined; +function clear_spinner() { + if (spinner_timeout) clearTimeout(spinner_timeout) + if (spinner_element) spinner_element.remove() + spinner_element = spinner_timeout = undefined; +} function fade(dir: boolean) { const overlay = document.createElement("div") overlay.classList.add("jst-fade") |