forked from MapComplete/MapComplete
		
	Fix: fix 'non-loading' due to incorrect caching in service worker
This commit is contained in:
		
							parent
							
								
									94da36d9d1
								
							
						
					
					
						commit
						f6d6ec9885
					
				
					 3 changed files with 30 additions and 6 deletions
				
			
		| 
						 | 
					@ -9,12 +9,14 @@ class PrepareServiceWorker extends Script {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public async main() {
 | 
					    public async main() {
 | 
				
			||||||
        const v = Constants.vNumber
 | 
					        const v = Constants.vNumber
 | 
				
			||||||
 | 
					        const date = new Date().getTime()
 | 
				
			||||||
        writeFileSync(
 | 
					        writeFileSync(
 | 
				
			||||||
            "./src/service-worker/SWGenerated.ts",
 | 
					            "./src/service-worker/SWGenerated.ts",
 | 
				
			||||||
            [
 | 
					            [
 | 
				
			||||||
                "export class SWGenerated {",
 | 
					                "export class SWGenerated {",
 | 
				
			||||||
                "// generated by scripts/prepareServiceWorker.ts",
 | 
					                "// generated by scripts/prepareServiceWorker.ts",
 | 
				
			||||||
                "static vNumber = " + JSON.stringify(v),
 | 
					                "static vNumber = " + JSON.stringify(v),
 | 
				
			||||||
 | 
					                "static buildTime = " + date,
 | 
				
			||||||
                "}",
 | 
					                "}",
 | 
				
			||||||
            ].join("\n"),
 | 
					            ].join("\n"),
 | 
				
			||||||
            "utf8"
 | 
					            "utf8"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
export class SWGenerated {
 | 
					export class SWGenerated {
 | 
				
			||||||
// generated by scripts/prepareServiceWorker.ts
 | 
					// generated by scripts/prepareServiceWorker.ts
 | 
				
			||||||
    static vNumber = "0.55.4"
 | 
					static vNumber = "0.55.5"
 | 
				
			||||||
 | 
					static buildTime = 1756119249268
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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) {
 | 
					function respondFromCache(event: FetchEvent) {
 | 
				
			||||||
    event.respondWith(
 | 
					    event.respondWith(
 | 
				
			||||||
        caches.open(SWGenerated.vNumber).then(async (cache) => {
 | 
					        getCache().then(async (cache) => {
 | 
				
			||||||
            const cached = await cache.match(event.request)
 | 
					            const cached = await cache.match(event.request)
 | 
				
			||||||
            if (!cached) {
 | 
					            if (!cached) {
 | 
				
			||||||
                const response = await fetch(event.request)
 | 
					                const response = await fetch(event.request)
 | 
				
			||||||
| 
						 | 
					@ -32,7 +50,7 @@ function respondFromCache(event: FetchEvent) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function listCachedRequests(): Promise<string[]> {
 | 
					async function listCachedRequests(): Promise<string[]> {
 | 
				
			||||||
    const cache = await caches.open(SWGenerated.vNumber)
 | 
					    const cache = await getCache()
 | 
				
			||||||
    const requests = await cache.keys()
 | 
					    const requests = await cache.keys()
 | 
				
			||||||
    return requests.map((req) => req.url)
 | 
					    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) => {
 | 
					self.addEventListener("activate", (event) => {
 | 
				
			||||||
    event.waitUntil(self.clients.claim())
 | 
					    event.waitUntil(self.clients.claim())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue