This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
web/sw.js
2023-04-28 12:54:16 +01:00

89 lines
2.4 KiB
JavaScript

/* Service Worker */
const appVersion = "1.2.4-dev-pis"
const cacheName = `owlboard-${appVersion}`;
const cacheIDs = [cacheName];
const cacheFiles = [
"/404.html",
"/auth.html",
"/board.html",
"/conn-err.html",
"/help.html",
"/",
"/issue.html",
"/find-code.html",
"/settings.html",
"/pis.html",
"/manifest.json",
"/styles/fonts/firamono/firamono-500.woff2",
"/styles/fonts/firamono/firamono-regular.woff2",
"/styles/fonts/urwgothic/urwgothic.woff2",
"/styles/fonts/urwgothic/urwgothicDemi.woff2",
"/styles/board.css",
"/styles/find-code.css",
"/styles/help.css",
"/styles/issue.css",
"/styles/main.css",
"/styles/settings.css",
"/styles/pis.css",
"/js/find-code.js",
"/js/index.js",
"/js/issue.js",
"/js/lib.board.js",
"/js/lib.main.js",
"/js/auth.js",
"/js/settings.js",
"/js/simple-board.js",
"/js/pis.js",
"/images/icon.svg",
"/images/logo/wide_logo.svg",
"/images/logo/mono-logo.svg",
"/images/app-icons/any/plain-logo.svg",
"/images/app-icons/any/plain-logo-512.png",
"/images/nav/alert_icon.svg",
"/images/nav/save.svg",
"/images/nav/home_icon.svg",
"/images/nav/back.svg",
"/images/nav/hamburger.svg",
"/images/nav/close.svg",
"/images/nav/refresh.svg",
"/images/nre/nre-powered_400w.webp",
"/images/nre/nre-powered_400w.jxl"
];
self.addEventListener("install", (e) => {
console.log("[Service Worker] Install");
e.waitUntil(
(async () => {
const cache = await caches.open(cacheName);
console.log("[Service Worker] Caching app data");
await cache.addAll(cacheFiles);
})()
);
});
self.addEventListener("fetch", (e) => {
e.respondWith(
(async () => {
const r = await caches.match(e.request,{ignoreSearch: true});
if (r) {
return r;
}
const response = await fetch(e.request);
console.log(`[Service Worker] Not cached - fetching from server: ${e.request.url}`);
return response;
})()
);
});
self.addEventListener('activate', function (event) {
event.waitUntil(caches.keys().then(function (keys) {
return Promise.all(keys.filter(function (key) {
return !cacheIDs.includes(key);
}).map(function (key) {
return caches.delete(key);
}));
}).then(function () {
return self.clients.claim();
}));
});