feat: don't cache missing file

This commit is contained in:
Ayo Ayco 2024-08-02 16:20:44 +02:00
parent c2ab1fc2c6
commit f42b1b313c
2 changed files with 30 additions and 10 deletions

View file

@ -1,10 +1,12 @@
const addResourcesToCache = async (resources) => { const addResourcesToCache = async (resources) => {
const cache = await caches.open('v1'); const cache = await caches.open('cozy-reader-app-v1');
console.log('adding resources to cache...', resources)
await cache.addAll(resources); await cache.addAll(resources);
}; };
const putInCache = async (request, response) => { const putInCache = async (request, response) => {
const cache = await caches.open('v1'); const cache = await caches.open('cozy-reader-app-v1');
console.log('adding one response to cache...', request)
await cache.put(request, response); await cache.put(request, response);
}; };
@ -59,25 +61,27 @@ const enableNavigationPreload = async () => {
}; };
self.addEventListener('activate', (event) => { self.addEventListener('activate', (event) => {
console.log('activating...', event)
event.waitUntil(enableNavigationPreload()); event.waitUntil(enableNavigationPreload());
}); });
self.addEventListener('install', (event) => { self.addEventListener('install', (event) => {
console.log('installing...', event)
event.waitUntil( event.waitUntil(
addResourcesToCache([ addResourcesToCache([
'./', './',
'./index.html', './favicon.ico',
'./favicon.ico'
]) ])
); );
}); });
self.addEventListener('fetch', (event) => { self.addEventListener('fetch', (event) => {
console.log('fetch happened', event.request)
event.respondWith( event.respondWith(
cacheFirst({ cacheFirst({
request: event.request, request: event.request,
preloadResponsePromise: event.preloadResponse, preloadResponsePromise: event.preloadResponse,
fallbackUrl: './index.html', fallbackUrl: './',
}) })
); );
}); });

View file

@ -40,10 +40,26 @@ if (url)
<Serialize id="app-config" data={appConfig} /> <Serialize id="app-config" data={appConfig} />
<script> <script>
if ('serviceWorker' in navigator) { const registerSW = async () => {
console.log('trying to register service worker...') if ("serviceWorker" in navigator) {
navigator.serviceWorker.register("/sw.js"); try {
} else { const registration = await navigator.serviceWorker.register("/sw.js", {
console.log('browser doesn\'t support service workers. boo') scope: "/",
});
if (registration.installing) {
console.log("Service worker installing");
} else if (registration.waiting) {
console.log("Service worker installed");
} else if (registration.active) {
console.log("Service worker active");
}
} catch (error) {
console.error(`Registration failed with ${error}`);
}
} else {
console.log('browser doesn\'t support service workers. boo')
}
} }
registerSW();
</script> </script>