diff options
author | metamuffin <metamuffin@disroot.org> | 2022-10-26 23:54:33 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-10-26 23:54:33 +0200 |
commit | 2a83c8bdbdd5a67b6068420520e83524f4a6f6bd (patch) | |
tree | 8638903b93eb929ca74e5027a1816820ff0bc346 /client-web/source/sw/init.ts | |
parent | d0162d41438c7ee3d9bc5321f73ed33defc443a3 (diff) | |
download | keks-meet-2a83c8bdbdd5a67b6068420520e83524f4a6f6bd.tar keks-meet-2a83c8bdbdd5a67b6068420520e83524f4a6f6bd.tar.bz2 keks-meet-2a83c8bdbdd5a67b6068420520e83524f4a6f6bd.tar.zst |
some code for streamed downloads
Diffstat (limited to 'client-web/source/sw/init.ts')
-rw-r--r-- | client-web/source/sw/init.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/client-web/source/sw/init.ts b/client-web/source/sw/init.ts new file mode 100644 index 0000000..d082038 --- /dev/null +++ b/client-web/source/sw/init.ts @@ -0,0 +1,35 @@ +/* + This file is part of keks-meet (https://codeberg.org/metamuffin/keks-meet) + which is licensed under the GNU Affero General Public License (version 3); see /COPYING. + Copyright (C) 2022 metamuffin <metamuffin@disroot.org> +*/ +/// <reference lib="dom" /> + +import { log } from "../logger.ts" + +export let SW: ServiceWorker | undefined +export async function init_serviceworker() { + let reg = await globalThis.navigator.serviceWorker.getRegistration() + if (reg) { + log("sw", "service worker already installed") + } else { + log("sw", "registering service worker") + await globalThis.navigator.serviceWorker.register("/sw.js", { scope: "/", type: "module" }) + log("sw", "worker installed") + reg = await globalThis.navigator.serviceWorker.getRegistration(); + if (!reg) throw new Error("we just registered the sw!?"); + } + const i = setInterval(() => { + if (reg!.active) { + SW = reg!.active + clearInterval(i) + } + }, 100) +} + +export async function update_serviceworker() { + const regs = await globalThis.navigator.serviceWorker.getRegistrations() + for (const r of regs) await r.unregister() + log("sw", "cleared all workers") + setTimeout(() => window.location.reload(), 500) +} |