From f685e74c6a58d66f1b39582ba09ecf3f62056c90 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Mon, 26 Jun 2023 13:36:25 +0800 Subject: [PATCH] Registe service worker --- islands/Container.tsx | 7 +++++++ server/sw.ts | 10 ++++++++++ 2 files changed, 17 insertions(+) create mode 100644 server/sw.ts diff --git a/islands/Container.tsx b/islands/Container.tsx index 1e6fe22..cecbf46 100644 --- a/islands/Container.tsx +++ b/islands/Container.tsx @@ -13,6 +13,7 @@ import { initState, set_state } from "../server/state.ts"; import NewTask from "../components/NewTask.tsx"; import { parse_int } from "../server/parse.ts"; import { detect_darkmode } from "../server/dark.ts"; +import { registeServiceWorker } from "../server/sw.ts"; export type ContainerProps = { i18n: I18NMap; @@ -68,6 +69,12 @@ export default class Container extends Component { } else if (dm === DarkMode.Dark) { document.body.classList.add("dark-scheme"); } + registeServiceWorker("/sw.js", { updateViaCache: "all" }).catch( + (e) => { + console.error("Failed to registe service worker."); + console.error(e); + }, + ); }, []); return (
diff --git a/server/sw.ts b/server/sw.ts new file mode 100644 index 0000000..e67d3d0 --- /dev/null +++ b/server/sw.ts @@ -0,0 +1,10 @@ +export async function registeServiceWorker( + path: string, + options?: RegistrationOptions, +) { + const r = await navigator.serviceWorker.getRegistration(path); + if (r === undefined) { + return await navigator.serviceWorker.register(path, options); + } + return r; +}