-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathservice-worker.js
More file actions
5 lines (5 loc) · 1.12 KB
/
service-worker.js
File metadata and controls
5 lines (5 loc) · 1.12 KB
1
2
3
4
5
const CACHE_NAME = 'muscle-timer-v2.5';
const ASSET_NAMES = ['index.html', 'style.css', 'app.js', 'exercises-db.js', 'session.js', 'progress.js', 'manifest.json', 'icon-192.svg', 'icon-512.svg'];
self.addEventListener('install', e => { e.waitUntil(caches.open(CACHE_NAME).then(c => { const base = self.registration.scope; const urls = ASSET_NAMES.map(n => new URL(n, base).href); urls.push(base); return c.addAll(urls) })); self.skipWaiting() });
self.addEventListener('activate', e => { e.waitUntil(caches.keys().then(k => Promise.all(k.filter(x => x !== CACHE_NAME).map(x => caches.delete(x))))); self.clients.claim() });
self.addEventListener('fetch', e => { if (e.request.method !== 'GET') return; const u = new URL(e.request.url); if (u.origin === self.location.origin) { e.respondWith(caches.match(e.request).then(r => r || fetch(e.request).then(res => { const c = res.clone(); caches.open(CACHE_NAME).then(ca => ca.put(e.request, c)); return res }))) } else { e.respondWith(fetch(e.request).then(res => { const c = res.clone(); caches.open(CACHE_NAME).then(ca => ca.put(e.request, c)); return res }).catch(() => caches.match(e.request))) } });