From 6e1512b4b8a31bf372c07d6eb349cf7ce2140a93 Mon Sep 17 00:00:00 2001 From: maxluli Date: Tue, 11 Oct 2022 11:34:06 +0200 Subject: [PATCH] Now the app is filling the PWA minimal lighhouse requirements --- assets/JsStuff/manifest.webmanifest | 2 ++ sw.js | 53 ++++++++++++++++++++++++++--- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/assets/JsStuff/manifest.webmanifest b/assets/JsStuff/manifest.webmanifest index e7bbaf0..b238d2b 100644 --- a/assets/JsStuff/manifest.webmanifest +++ b/assets/JsStuff/manifest.webmanifest @@ -4,6 +4,8 @@ "start_url": "/es2-2022-2023/rhmr/PokemonTinder/index.html", "id": "/es2-2022-2023/rhmr/PokemonTinder/index.html", "display": "fullscreen", + "theme_color": "red", + "background_color": "black", "icons": [ { "src": "/es2-2022-2023/rhmr/PokemonTinder/assets/img/Icon2.png", diff --git a/sw.js b/sw.js index 8bbe9cb..3d415df 100644 --- a/sw.js +++ b/sw.js @@ -1,7 +1,50 @@ // This code executes in its own worker or thread self.addEventListener("install", event => { - console.log("Service worker installed"); - }); - self.addEventListener("activate", event => { - console.log("Service worker activated"); - }); \ No newline at end of file + console.log("Service worker installed"); +}); +self.addEventListener("activate", event => { + console.log("Service worker activated"); +}); + + +self.addEventListener("fetch", event => { + // Stratégie Cache-First + event.respondWith( + caches + .match(event.request) // On vérifie si la requête a déjà été mise en cache + .then(cached => cached || fetch(event.request)) // sinon on requête le réseau + .then( + response => + cache(event.request, response) // on met à jour le cache + .then(() => response) // et on résout la promesse avec l'objet Response + ) + ); +}); +function cache(request, response) { + if (response.type === "error" || response.type === "opaque") { + return Promise.resolve(); // do not put in cache network errors + } + + return caches + .open(CACHE_NAME) + .then(cache => cache.put(request, response.clone())); +} + +const CACHE_NAME = "V2"; + +self.addEventListener("activate", event => { + // delete any unexpected caches + event.waitUntil( + caches + .keys() + .then(keys => keys.filter(key => key !== CACHE_NAME)) + .then(keys => + Promise.all( + keys.map(key => { + console.log(`Deleting cache ${key}`); + return caches.delete(key); + }) + ) + ) + ); +}); \ No newline at end of file