Fix: fix 'non-loading' due to incorrect caching in service worker

This commit is contained in:
Pieter Vander Vennet 2025-08-25 12:57:48 +02:00
parent 94da36d9d1
commit f6d6ec9885
3 changed files with 30 additions and 6 deletions

View file

@ -9,12 +9,14 @@ class PrepareServiceWorker extends Script {
public async main() {
const v = Constants.vNumber
const date = new Date().getTime()
writeFileSync(
"./src/service-worker/SWGenerated.ts",
[
"export class SWGenerated {",
"// generated by scripts/prepareServiceWorker.ts",
"static vNumber = " + JSON.stringify(v),
"static buildTime = " + date,
"}",
].join("\n"),
"utf8"

View file

@ -1,4 +1,5 @@
export class SWGenerated {
// generated by scripts/prepareServiceWorker.ts
static vNumber = "0.55.4"
}
// generated by scripts/prepareServiceWorker.ts
static vNumber = "0.55.5"
static buildTime = 1756119249268
}

View file

@ -17,9 +17,27 @@ function jsonResponse(object: object | []): Response {
})
}
const cacheKey = SWGenerated.vNumber + "-" + SWGenerated.vNumber
function cleanOldCaches() {
caches.keys().then(keys => {
return Promise.all(
keys.map(k => {
if (k !== cacheKey) {
return caches.delete(k)
}
})
)
})
}
function getCache() {
return caches.open(cacheKey)
}
function respondFromCache(event: FetchEvent) {
event.respondWith(
caches.open(SWGenerated.vNumber).then(async (cache) => {
getCache().then(async (cache) => {
const cached = await cache.match(event.request)
if (!cached) {
const response = await fetch(event.request)
@ -32,7 +50,7 @@ function respondFromCache(event: FetchEvent) {
}
async function listCachedRequests(): Promise<string[]> {
const cache = await caches.open(SWGenerated.vNumber)
const cache = await getCache()
const requests = await cache.keys()
return requests.map((req) => req.url)
}
@ -107,7 +125,10 @@ self.addEventListener("fetch", (event) => {
}
})
self.addEventListener("install", () => self.skipWaiting())
self.addEventListener("install", async () => {
await self.skipWaiting()
cleanOldCaches()
})
self.addEventListener("activate", (event) => {
event.waitUntil(self.clients.claim())