From f48db59b8b5e9d7dcc4bfbe53907f38aa9ec7d1c Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 31 Jul 2025 11:29:47 -0400 Subject: [PATCH] update sw test --- public/sw.js | 61 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/public/sw.js b/public/sw.js index 15071d8..3f5324c 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1,25 +1,29 @@ -const CACHE_NAME = 'timetracker-test-v1'; -const urlsToCache = ['/', '/index.html']; +const CACHE_NAME = 'timetracker-debug-v1'; +const urlsToCache = ['/', '/index.html', '/manifest.json']; -self.addEventListener('install', event => { - console.log('[SW] Install'); +self.addEventListener('install', (event) => { + console.log('[SW] Install event triggered'); event.waitUntil( - caches.open(CACHE_NAME).then(cache => { - console.log('[SW] Caching shell:', urlsToCache); - return cache.addAll(urlsToCache); - }).catch(err => console.error('[SW] Install failed:', err)) + caches.open(CACHE_NAME) + .then(cache => { + console.log('[SW] Caching:', urlsToCache); + return cache.addAll(urlsToCache); + }) + .catch(err => { + console.error('[SW] Install failed:', err); + }) ); }); -self.addEventListener('activate', event => { - console.log('[SW] Activate'); +self.addEventListener('activate', (event) => { + console.log('[SW] Activate event'); event.waitUntil( - caches.keys().then(cacheNames => + caches.keys().then(keys => Promise.all( - cacheNames.map(name => { - if (name !== CACHE_NAME) { - console.log('[SW] Deleting old cache:', name); - return caches.delete(name); + keys.map(key => { + if (key !== CACHE_NAME) { + console.log('[SW] Deleting old cache:', key); + return caches.delete(key); } }) ) @@ -27,22 +31,33 @@ self.addEventListener('activate', event => { ); }); -self.addEventListener('fetch', event => { +self.addEventListener('fetch', (event) => { if (event.request.method !== 'GET') return; + console.log('[SW] Fetching:', event.request.url); + event.respondWith( caches.match(event.request).then(cached => { if (cached) { - console.log('[SW] Cache hit:', event.request.url); + console.log('[SW] Serving from cache:', event.request.url); return cached; } - return fetch(event.request).then(networkRes => { - return networkRes; - }).catch(err => { - console.error('[SW] Fetch failed:', event.request.url, err); - return new Response('Offline', { status: 503 }); - }); + return fetch(event.request) + .then(response => { + if ( + response && + response.status === 200 && + response.type === 'basic' + ) { + const cloned = response.clone(); + caches.open(CACHE_NAME).then(cache => { + cache.put(event.request, cloned); + }); + } + return response; + }) + .catch(() => new Response('You are offline.', { status: 503 })); }) ); });