aboutsummaryrefslogtreecommitdiff
path: root/client-web/source/sw/init.ts
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-10-26 23:54:33 +0200
committermetamuffin <metamuffin@disroot.org>2022-10-26 23:54:33 +0200
commit2a83c8bdbdd5a67b6068420520e83524f4a6f6bd (patch)
tree8638903b93eb929ca74e5027a1816820ff0bc346 /client-web/source/sw/init.ts
parentd0162d41438c7ee3d9bc5321f73ed33defc443a3 (diff)
downloadkeks-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.ts35
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)
+}