From 0010717b6e86bb662fa04dab94968eee6fe8de64 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 30 Jan 2024 13:58:52 +0100 Subject: support native player in settings and jst --- web/script/transition.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'web/script') 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("")[1].split("") if (!back) window.history.pushState({}, "", href) -- cgit v1.2.3-70-g09d2