diff --git a/public/service-worker.js b/public/service-worker.js index a6650d7..695fdbc 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -1,13 +1,20 @@ -const CACHE='sun-catering-pwa-v78-20260909-v17-7-3-clients-server-read'; -const VERSION='20260909-v17-7-3-clients-server-read'; +const CACHE='sun-catering-pwa-v79-20260912-login-refresh'; +const VERSION='20260912-login-refresh'; const CORE=[ './','./index.html', - `./core/sun-safe.js?v=${VERSION}`,`./core/performance.js?v=${VERSION}`,`./core/data-layer-v1773.js?v=${VERSION}`,`./core/server-automation-v1770.js?v=${VERSION}`,`./core/hotfix-v1763.js?v=${VERSION}`,`./core/ops-ux-v1762.js?v=${VERSION}`,`./core/ux-fixes-v1764.js?v=${VERSION}`,`./core/pdf-engine.js?v=${VERSION}`,`./core/classic-offer-pdf-v1767.js?v=${VERSION}`,`./core/developer-console-v1768.js?v=${VERSION}`,`./core/offer-workspace-v1769.js?v=${VERSION}`,`./legacy/bootstrap.js?v=${VERSION}`,`./app-runtime.js?v=${VERSION}`, + `./core/sun-safe.js?v=${VERSION}`,`./core/performance.js?v=${VERSION}`,`./core/login-signature-v1776.js?v=${VERSION}`,`./core/data-layer-v1773.js?v=${VERSION}`,`./core/server-automation-v1770.js?v=${VERSION}`,`./core/hotfix-v1763.js?v=${VERSION}`,`./core/ops-ux-v1762.js?v=${VERSION}`,`./core/ux-fixes-v1764.js?v=${VERSION}`,`./core/pdf-engine.js?v=${VERSION}`,`./core/classic-offer-pdf-v1767.js?v=${VERSION}`,`./core/developer-console-v1768.js?v=${VERSION}`,`./core/offer-workspace-v1769.js?v=${VERSION}`,`./legacy/bootstrap.js?v=${VERSION}`,`./app-runtime.js?v=${VERSION}`, './offer-gallery/001.jpg','./offer-gallery/002.jpg', './catalog/001.jpg','./catalog/002.jpg','./catalog/003.jpg', - './sun-logo.png','./caterium-login-logo.png','./pwa-icon-192.png','./pwa-icon-512.png','./manifest.webmanifest', + './sun-logo.png','./caterium-login-logo.png','./caterium-mark-light.svg','./pwa-icon-192.png','./pwa-icon-512.png','./manifest.webmanifest', './offer-templates/thumb-light.jpg','./offer-templates/thumb-editorial-grid.jpg','./offer-templates/thumb-midnight-glass.jpg','./offer-templates/thumb-emerald-gold.jpg' ]; +const CRITICAL_FRESH=new Set([ + '/core/performance.js', + '/core/login-signature-v1776.js', + '/core/auth-security-v1774.js', + '/legacy/bootstrap.js', + '/app-runtime.js' +]); self.addEventListener('install',event=>{ event.waitUntil(caches.open(CACHE).then(cache=>cache.addAll(CORE)).then(()=>self.skipWaiting())); }); @@ -18,15 +25,23 @@ function cachePut(req,res){ if(res&&res.ok){const clone=res.clone();caches.open(CACHE).then(c=>c.put(req,clone)).catch(()=>{});}return res; } function networkFirst(req,fallback){ - return fetch(req).then(res=>cachePut(req,res)).catch(()=>caches.match(req).then(hit=>hit||caches.match(fallback||req))); + return fetch(req,{cache:'no-store'}).then(res=>cachePut(req,res)).catch(()=>caches.match(req).then(hit=>hit||caches.match(fallback||req))); +} +function forceFresh(req){ + const url=new URL(req.url); + url.searchParams.set('__caterium_release',VERSION); + return fetch(url.toString(),{cache:'no-store',credentials:'same-origin'}).then(res=>cachePut(req,res)).catch(()=>caches.match(req)); } self.addEventListener('fetch',event=>{ const req=event.request;if(req.method!=='GET')return; const url=new URL(req.url);if(url.pathname.startsWith('/api/'))return; if(req.mode==='navigate'){ - event.respondWith(fetch(req).then(res=>{const clone=res.clone();caches.open(CACHE).then(c=>c.put('./index.html',clone)).catch(()=>{});return res}).catch(()=>caches.match('./index.html')));return; + event.respondWith(fetch(req,{cache:'no-store'}).then(res=>{const clone=res.clone();caches.open(CACHE).then(c=>c.put('./index.html',clone)).catch(()=>{});return res}).catch(()=>caches.match('./index.html')));return; + } + if(CRITICAL_FRESH.has(url.pathname)){ + event.respondWith(forceFresh(req));return; } const freshAsset=/\.(?:js|css|webmanifest)$/i.test(url.pathname); if(freshAsset){event.respondWith(networkFirst(req));return;} - event.respondWith(caches.match(req).then(cached=>cached||fetch(req).then(res=>cachePut(req,res)))); + event.respondWith(caches.match(req).then(cached=>cached||fetch(req,{cache:'no-store'}).then(res=>cachePut(req,res)))); });