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; +}