From 1e31b71afd1ead4644e99df6838a55481176e09a Mon Sep 17 00:00:00 2001 From: Nathan Reiner Date: Sun, 23 Nov 2025 16:41:43 +0100 Subject: add fonts and create-user endpoint --- static/service-worker/index.js | 21 +++++++++++++++++++++ static/service-worker/worker.js | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 static/service-worker/index.js create mode 100644 static/service-worker/worker.js (limited to 'static/service-worker') diff --git a/static/service-worker/index.js b/static/service-worker/index.js new file mode 100644 index 0000000..cff4b95 --- /dev/null +++ b/static/service-worker/index.js @@ -0,0 +1,21 @@ +export const register = async () => { + if (!'serviceWorker' in navigator) { + console.warn('service worker not supported by browser'); + return; + } + + try { + const registration = await navigator.serviceWorker.register("/service-worker/worker.js", { + scope: "/", + }); + if (registration.installing) { + console.log("Service worker installing"); + } else if (registration.waiting) { + console.log("Service worker installed"); + } else if (registration.active) { + console.log("Service worker active"); + } + } catch (error) { + console.error(`Registration failed with ${error}`); + } +} diff --git a/static/service-worker/worker.js b/static/service-worker/worker.js new file mode 100644 index 0000000..ad5a374 --- /dev/null +++ b/static/service-worker/worker.js @@ -0,0 +1,18 @@ +const putInCache = async (request, response) => { + const cache = await caches.open("v1"); + await cache.put(request, response); +}; + +const cacheFirst = async (request, event) => { + const responseFromCache = await caches.match(request); + if (responseFromCache) { + return responseFromCache; + } + const responseFromNetwork = await fetch(request); + event.waitUntil(putInCache(request, responseFromNetwork.clone())); + return responseFromNetwork; +}; + +self.addEventListener("fetch", (event) => { + event.respondWith(cacheFirst(event.request, event)); +}); -- cgit v1.2.3-70-g09d2