From 914bd7cd6aa14e839332a98d91c30b19865b0cf2 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sun, 17 May 2026 15:25:52 +0300 Subject: Restructure repo: move Go server into player-server/ --- player-server/web/sw.js | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 player-server/web/sw.js (limited to 'player-server/web/sw.js') diff --git a/player-server/web/sw.js b/player-server/web/sw.js new file mode 100644 index 0000000..9707748 --- /dev/null +++ b/player-server/web/sw.js @@ -0,0 +1,72 @@ +const CACHE = 'kiss-v19'; +const ASSETS = [ + '/', + '/index.html', + '/detach.html', + '/login.html', + '/bootstrap.html', + '/css/theme.css', + '/css/layout.css', + '/css/components.css', + '/css/player.css', + '/css/login.css', + '/js/app.js', + '/js/state.js', + '/js/api.js', + '/js/keyboard.js', + '/js/selection.js', + '/js/player.js', + '/js/playback.js', + '/js/imageViewer.js', + '/js/detach.js', + '/js/detachPopup.js', + '/js/search.js', + '/js/shuffle.js', + '/js/themes.js', + '/js/notes.js', + '/js/admin.js', + '/js/dom.js', + '/js/utils.js', + '/js/podcasts.js', + '/js/pwa.js', + '/js/views/admin-status.js', + '/js/views/help.js', + '/js/views/media-actions.js', + '/js/views/media-grid.js', + '/js/views/media-info.js', + '/js/views/playback-nav.js', + '/js/views/sets.js', + '/js/views/shares.js', + '/js/views/tags.js', + '/js/views/upload.js', + '/manifest.json', +]; + +self.addEventListener('install', (e) => { + e.waitUntil(caches.open(CACHE).then((c) => c.addAll(ASSETS)).then(() => self.skipWaiting())); +}); + +self.addEventListener('activate', (e) => { + e.waitUntil( + caches.keys().then((keys) => + Promise.all(keys.filter((k) => k !== CACHE).map((k) => caches.delete(k))) + ).then(() => self.clients.claim()) + ); +}); + +self.addEventListener('fetch', (e) => { + if (e.request.method !== 'GET') return; + const url = new URL(e.request.url); + if (url.origin !== self.location.origin || url.pathname.startsWith('/api/')) return; + e.respondWith( + fetch(e.request) + .then((res) => { + const copy = res.clone(); + if (ASSETS.includes(url.pathname)) { + caches.open(CACHE).then((c) => c.put(e.request, copy)); + } + return res; + }) + .catch(() => caches.match(e.request)) + ); +}); -- cgit v1.2.3