aboutsummaryrefslogtreecommitdiff
path: root/web/script/transition.ts
diff options
context:
space:
mode:
Diffstat (limited to 'web/script/transition.ts')
-rw-r--r--web/script/transition.ts18
1 files changed, 12 insertions, 6 deletions
diff --git a/web/script/transition.ts b/web/script/transition.ts
index ce0cd94..a15a6b0 100644
--- a/web/script/transition.ts
+++ b/web/script/transition.ts
@@ -39,23 +39,29 @@ async function transition_to(href: string, back?: boolean) {
disable_transition = false;
}
-function show_error(mesg: string) {
+function show_message(mesg: string, mode: "error" | "success" = "error") {
clear_spinner()
disable_transition = true
- document.body.append(e("span", { class: "jst-error" }, mesg))
+ document.body.append(e("span", { class: ["jst-message", mode] }, mesg))
}
function prepare_load(href: string, back?: boolean) {
- const r_promise = fetch(href)
+ const r_promise = fetch(href, { headers: { accept: "text/html" }, redirect: "manual" })
return async () => {
let rt = ""
try {
const r = await r_promise
- if (!r.ok) return show_error("Error response. Try again.")
+ if (r.type == "opaqueredirect") {
+ window.location.href = href
+ show_message("Native Player Started.", "success")
+ setTimeout(() => window.location.reload(), 500)
+ return
+ }
+ if (!r.ok) return show_message("Error response. Try again.")
rt = await r.text()
} catch (e) {
- if (e instanceof TypeError) return show_error("Navigation failed. Check your connection.")
- return show_error("unknown error when fetching page")
+ if (e instanceof TypeError) return show_message("Navigation failed. Check your connection.")
+ return show_message("unknown error when fetching page")
}
const [head, body] = rt.split("<head>")[1].split("</head>")
if (!back) window.history.pushState({}, "", href)