From dc9638ec731efb15b6c2e81369eeed5443d443b4 Mon Sep 17 00:00:00 2001 From: Felipe <41008398+StrawberryMaster@users.noreply.github.com> Date: Tue, 21 Jan 2025 16:02:46 +0000 Subject: [PATCH] waiting for active Service Worker first thanks, Chromium browsers --- service-worker.js | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/service-worker.js b/service-worker.js index 9d40485..f925b6d 100644 --- a/service-worker.js +++ b/service-worker.js @@ -91,19 +91,34 @@ self.addEventListener('install', event => { ); }); -self.addEventListener("fetch", async (event) => { - const request = event.request; +function waitForActiveServiceWorker() { + return new Promise(resolve) => { + if (self.registration.active) { + resolve(self.registration); + } else { + self.addEventListener('activate', () => { + resolve(self.registration); + }); + } + }); +} - if (!isCachable(request)) { - event.respondWith(fetch(request)); - return; - } +self.addEventListener('fetch', async (event) => { + event.respondWith( + waitForActiveServiceWorker().then(() => { + const request = event.request; - if (isImage(request)) { - event.respondWith(staleWhileRevalidate(request)); - } else { - event.respondWith(cacheFirstWithRefresh(request)); - } + if (!isCachable(request)) { + return fetch(request); + } + + if (isImage(request)) { + return staleWhileRevalidate(request); + } else { + return cacheFirstWithRefresh(request); + } + }) + ); }); self.addEventListener('activate', event => {