Files
Sybil-2/web/src/pwa.ts
T

20 lines
924 B
TypeScript
Raw Normal View History

2026-10-14 22:03:21 -07:00
export async function ensureServiceWorker(): Promise<ServiceWorkerRegistration> {
const registration = await navigator.serviceWorker.register("/sw.js", { updateViaCache: "none" });
// ready can otherwise remain pending forever after an install failure.
return new Promise((resolve, reject) => {
const timeout = setTimeout(() => reject(new Error("The notification worker did not become ready. Reload and try again.")), 15000);
void navigator.serviceWorker.ready.then(ready => { clearTimeout(timeout); resolve(ready); }, () => {
clearTimeout(timeout); reject(new Error("The notification worker is unavailable."));
});
void registration.update().catch(() => undefined);
});
}
2026-05-30 00:32:57 -07:00
export function registerServiceWorker() {
if (!import.meta.env.PROD || !("serviceWorker" in navigator)) return;
window.addEventListener("load", () => {
2026-10-14 22:03:21 -07:00
void ensureServiceWorker().catch(() => undefined);
2026-05-30 00:32:57 -07:00
});
}