Add installable PWA support

This commit is contained in:
Codex committed 2026-09-17 12:43:01 +08:00
1 parent 0e118b6eaf
commit 310087ad84
4 files changed
+30 -1

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
const CACHE = "cet6-shell-v1";
const APP_SHELL = ["/", "/tasks", "/stats", "/review", "/manifest.webmanifest", "/favicon.svg"];
self.addEventListener("install", event => event.waitUntil(caches.open(CACHE).then(cache => cache.addAll(APP_SHELL)).then(() => self.skipWaiting())));
self.addEventListener("activate", event => event.waitUntil(self.clients.claim()));
self.addEventListener("fetch", event => {
const request = event.request;
if (request.method !== "GET" || new URL(request.url).origin !== location.origin) return;
if (request.url.includes("/api/")) return;
event.respondWith(fetch(request).then(response => { const copy = response.clone(); caches.open(CACHE).then(cache => cache.put(request, copy)); return response; }).catch(() => caches.match(request).then(found => found || caches.match("/"))));
});