rDrama/files/assets/js/service-worker.js

54 lines
1.2 KiB
JavaScript
Raw Normal View History

2022-07-16 21:00:02 +00:00
importScripts("https://js.pusher.com/beams/service-worker.js");
2022-11-20 23:40:48 +00:00
const CACHE = "pwabuilder-offline-page";
2022-11-20 23:40:48 +00:00
importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');
2022-11-20 23:40:48 +00:00
const offlineFallbackPage = "/assets/offline.html";
2022-11-20 23:40:48 +00:00
self.addEventListener("message", (event) => {
if (event.data && event.data.type === "SKIP_WAITING") {
self.skipWaiting();
}
2022-11-20 23:40:48 +00:00
});
self.addEventListener('install', async (event) => {
2022-11-20 23:40:48 +00:00
event.waitUntil(
caches.open(CACHE)
.then((cache) => cache.add(offlineFallbackPage))
2022-11-20 23:40:48 +00:00
);
});
if (workbox.navigationPreload.isSupported()) {
workbox.navigationPreload.enable();
}
workbox.routing.registerRoute(
new RegExp('/*'),
new workbox.strategies.StaleWhileRevalidate({
cacheName: CACHE
})
);
self.addEventListener('fetch', (event) => {
if (event.request.mode === 'navigate') {
2022-11-20 23:40:48 +00:00
event.respondWith((async () => {
try {
const preloadResp = await event.preloadResponse;
if (preloadResp) {
return preloadResp;
}
2022-11-20 23:40:48 +00:00
const networkResp = await fetch(event.request);
return networkResp;
2022-11-20 23:40:48 +00:00
} catch (error) {
const cache = await caches.open(CACHE);
const cachedResp = await cache.match(offlineFallbackPage);
return cachedResp;
2022-11-20 23:40:48 +00:00
}
})());
}
});