diff --git a/bdchapril.js b/bdchapril.js index 5337e52..d4f4b11 100644 --- a/bdchapril.js +++ b/bdchapril.js @@ -1,52 +1,79 @@ +'use strict'; +const checkCacheFunction = () => { + if ('applicationCache' in window) { + try { + var webappCache = window.applicationCache; -checkCacheFunction = function() { - var webappCache = window.applicationCache; - - function loaded() - { - //var h1El = document.querySelector("h1"); - var connectionStatus = ((navigator.onLine) ? 'online' : 'offline'); - //h1El.textContent = h1El.textContent + " - currently: " + connectionStatus; + const loaded = () => { + //var h1El = document.querySelector("h1"); + var connectionStatus = ((navigator.onLine) ? 'online' : 'offline'); + //h1El.textContent = h1El.textContent + " - currently: " + connectionStatus; + switch(webappCache.status) + { + case 0: + console.log("Cache status: Uncached."); + break; + case 1: + console.log("Cache status: Idle."); + break; + case 2: + console.log("Cache status: Checking."); + break; + case 3: + console.log("Cache status: Downloading."); + break; + case 4: + console.log("Cache status: Update ready."); + break; + case 5: + console.log("Cache status: Obsolete."); + break; + } + }; - switch(webappCache.status) - { - case 0: - console.log("Cache status: Uncached"); - break; - case 1: - console.log("Cache status: Idle"); - break; - case 2: - console.log("Cache status: Checking"); - break; - case 3: - console.log("Cache status: Downloading"); - break; - case 4: - console.log("Cache status: Updateready"); - break; - case 5: - console.log("Cache status: Obsolete"); - break; - } + const updateCache = () => { + webappCache.swapCache(); + console.log("Cache has been updated due to a change found in the manifest."); + }; - } + const errorCache = () => { + console.log("You're either offline or something has gone horribly wrong."); + }; - function updateCache() - { - webappCache.swapCache(); - console.log("Cache has been updated due to a change found in the manifest"); - } + window.addEventListener("load", loaded, false); + webappCache.addEventListener("updateready", updateCache, false); + webappCache.addEventListener("error", errorCache, false); + } catch (error) { + console.error(`Cache check failed with ${error}.`); + } + } else { + console.warn("Application caches are not supported!"); + } +}; - function errorCache() - { - console.log("You're either offline or something has gone horribly wrong."); - } - - window.addEventListener("load", loaded, false); - webappCache.addEventListener("updateready", updateCache, false); - webappCache.addEventListener("error", errorCache, false); - -} +const registerServiceWorker = async () => { + if ('serviceWorker' in navigator) { + try { + const registration = await navigator.serviceWorker.register( + 'sw.js', + { + 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.warn("Service workers are not supported!"); + } +}; checkCacheFunction(); +registerServiceWorker(); \ No newline at end of file diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..92efe1f --- /dev/null +++ b/sw.js @@ -0,0 +1,581 @@ +// Service Worker +'use strict'; + +const RESOURCES = [ + '/', + '/bdchapril.css', + '/comicgen.js', + '/index.html', + '/jquery-1.5.2.min.js', + '/pop.mp3', + '/pop.ogg', + '/ragaboom.min.js', + '/toons/affirmatif_mini.png', + '/toons/affirmatif.png', + '/toons/agace_mini.png', + '/toons/agace.png', + '/toons/ballon10_mini.png', + '/toons/ballon10.png', + '/toons/ballon1_mini.png', + '/toons/ballon1.png', + '/toons/ballon2_mini.png', + '/toons/ballon2.png', + '/toons/ballon3_mini.png', + '/toons/ballon3.png', + '/toons/ballon4_mini.png', + '/toons/ballon4.png', + '/toons/ballon5_mini.png', + '/toons/ballon5.png', + '/toons/ballon6_mini.png', + '/toons/ballon6.png', + '/toons/ballon7_mini.png', + '/toons/ballon7.png', + '/toons/ballon8_mini.png', + '/toons/ballon8.png', + '/toons/ballon9_mini.png', + '/toons/ballon9.png', + '/toons/blagueur_bras_croises_mini.png', + '/toons/blagueur_bras_croises.png', + '/toons/blagueur_bras_ecartes_mini.png', + '/toons/blagueur_bras_ecartes.png', + '/toons/blagueur_doigt_leve_mini.png', + '/toons/blagueur_doigt_leve.png', + '/toons/blagueuse_mini.png', + '/toons/blagueuse.png', + '/toons/blase_mini.png', + '/toons/blase.png', + '/toons/boude_mini.png', + '/toons/boude.png', + '/toons/boudeur_mini.png', + '/toons/boudeur.png', + '/toons/chasseur_mini.png', + '/toons/chasseur.png', + '/toons/choque_mini.png', + '/toons/choque.png', + '/toons/connard_avide_mini.png', + '/toons/connard_avide.png', + '/toons/connard_enoncant_mini.png', + '/toons/connard_enoncant.png', + '/toons/connard_menacant_mini.png', + '/toons/connard_menacant.png', + '/toons/connard_mini.png', + '/toons/connard.png', + '/toons/connard_pupitre_mini.png', + '/toons/connard_pupitre.png', + '/toons/custom01_mini.png', + '/toons/custom01.png', + '/toons/custom02_mini.png', + '/toons/custom02.png', + '/toons/custom03_mini.png', + '/toons/custom03.png', + '/toons/custom04_mini.png', + '/toons/custom04.png', + '/toons/custom05_mini.png', + '/toons/custom05.png', + '/toons/custom06_mini.png', + '/toons/custom06.png', + '/toons/custom07_mini.png', + '/toons/custom07.png', + '/toons/custom08_mini.png', + '/toons/custom08.png', + '/toons/custom09_mini.png', + '/toons/custom09.png', + '/toons/custom10_mini.png', + '/toons/custom10.png', + '/toons/custom11_mini.png', + '/toons/custom11.png', + '/toons/depite_mini.png', + '/toons/depite.png', + '/toons/desapointee_mini.png', + '/toons/desapointee.png', + '/toons/desapointe_mini.png', + '/toons/desapointe.png', + '/toons/effraye_mini.png', + '/toons/effraye.png', + '/toons/etonne_mini.png', + '/toons/etonne.png', + '/toons/facepalm2_mini.png', + '/toons/facepalm2.png', + '/toons/facepalm_mini.png', + '/toons/facepalm.png', + '/toons/fache_mini.png', + '/toons/fache.png', + '/toons/fbi_mini.png', + '/toons/fbi.png', + '/toons/festif_mini.png', + '/toons/festif.png', + '/toons/fond1_mini.png', + '/toons/fond1.png', + '/toons/fond2_mini.png', + '/toons/fond2.png', + '/toons/fond3_mini.png', + '/toons/fond3.png', + '/toons/fond4_mini.png', + '/toons/fond4.png', + '/toons/fond5_mini.png', + '/toons/fond5.png', + '/toons/grisbouille000_mini.png', + '/toons/grisbouille000.png', + '/toons/grisbouille001_mini.png', + '/toons/grisbouille001.png', + '/toons/grisbouille002_mini.png', + '/toons/grisbouille002.png', + '/toons/grisbouille003_mini.png', + '/toons/grisbouille003.png', + '/toons/grisbouille004_mini.png', + '/toons/grisbouille004.png', + '/toons/grisbouille005_mini.png', + '/toons/grisbouille005.png', + '/toons/grisbouille006_mini.png', + '/toons/grisbouille006.png', + '/toons/grisbouille007_mini.png', + '/toons/grisbouille007.png', + '/toons/grisbouille008_mini.png', + '/toons/grisbouille008.png', + '/toons/grisbouille009_mini.png', + '/toons/grisbouille009.png', + '/toons/grisbouille010_mini.png', + '/toons/grisbouille010.png', + '/toons/grisbouille011_mini.png', + '/toons/grisbouille011.png', + '/toons/grisbouille012_mini.png', + '/toons/grisbouille012.png', + '/toons/grisbouille013_mini.png', + '/toons/grisbouille013.png', + '/toons/grisbouille014_mini.png', + '/toons/grisbouille014.png', + '/toons/grisbouille015_mini.png', + '/toons/grisbouille015.png', + '/toons/grisbouille016_mini.png', + '/toons/grisbouille016.png', + '/toons/grisbouille017_mini.png', + '/toons/grisbouille017.png', + '/toons/grisbouille018_mini.png', + '/toons/grisbouille018.png', + '/toons/grisbouille019_mini.png', + '/toons/grisbouille019.png', + '/toons/grisbouille020_mini.png', + '/toons/grisbouille020.png', + '/toons/grisbouille021_mini.png', + '/toons/grisbouille021.png', + '/toons/grisbouille022_mini.png', + '/toons/grisbouille022.png', + '/toons/grisbouille023_mini.png', + '/toons/grisbouille023.png', + '/toons/grisbouille024_mini.png', + '/toons/grisbouille024.png', + '/toons/grisbouille025_mini.png', + '/toons/grisbouille025.png', + '/toons/grisbouille026_mini.png', + '/toons/grisbouille026.png', + '/toons/grisbouille027_mini.png', + '/toons/grisbouille027.png', + '/toons/grisbouille028_mini.png', + '/toons/grisbouille028.png', + '/toons/grisbouille029_mini.png', + '/toons/grisbouille029.png', + '/toons/grisbouille030_mini.png', + '/toons/grisbouille030.png', + '/toons/grisbouille031_mini.png', + '/toons/grisbouille031.png', + '/toons/grisbouille032_mini.png', + '/toons/grisbouille032.png', + '/toons/grisbouille033_mini.png', + '/toons/grisbouille033.png', + '/toons/grisbouille034_mini.png', + '/toons/grisbouille034.png', + '/toons/grisbouille035_mini.png', + '/toons/grisbouille035.png', + '/toons/grisbouille036_mini.png', + '/toons/grisbouille036.png', + '/toons/grisbouille037_mini.png', + '/toons/grisbouille037.png', + '/toons/grisbouille038_mini.png', + '/toons/grisbouille038.png', + '/toons/grisbouille039_mini.png', + '/toons/grisbouille039.png', + '/toons/grisbouille040_mini.png', + '/toons/grisbouille040.png', + '/toons/grisbouille041_mini.png', + '/toons/grisbouille041.png', + '/toons/grisbouille042_mini.png', + '/toons/grisbouille042.png', + '/toons/grisbouille043_mini.png', + '/toons/grisbouille043.png', + '/toons/grisbouille044_mini.png', + '/toons/grisbouille044.png', + '/toons/grisbouille045_mini.png', + '/toons/grisbouille045.png', + '/toons/grisbouille046_mini.png', + '/toons/grisbouille046.png', + '/toons/grisbouille047_mini.png', + '/toons/grisbouille047.png', + '/toons/grisbouille048_mini.png', + '/toons/grisbouille048.png', + '/toons/grisbouille049_mini.png', + '/toons/grisbouille049.png', + '/toons/grisbouille050_mini.png', + '/toons/grisbouille050.png', + '/toons/grisbouille051_mini.png', + '/toons/grisbouille051.png', + '/toons/grisbouille052_mini.png', + '/toons/grisbouille052.png', + '/toons/grisbouille053_mini.png', + '/toons/grisbouille053.png', + '/toons/grisbouille054_mini.png', + '/toons/grisbouille054.png', + '/toons/grisbouille055_mini.png', + '/toons/grisbouille055.png', + '/toons/grisbouille056_mini.png', + '/toons/grisbouille056.png', + '/toons/grisbouille057_mini.png', + '/toons/grisbouille057.png', + '/toons/grisbouille058_mini.png', + '/toons/grisbouille058.png', + '/toons/grisbouille059_mini.png', + '/toons/grisbouille059.png', + '/toons/grisbouille060_mini.png', + '/toons/grisbouille060.png', + '/toons/grisbouille061_mini.png', + '/toons/grisbouille061.png', + '/toons/grisbouille062_mini.png', + '/toons/grisbouille062.png', + '/toons/grisbouille063_mini.png', + '/toons/grisbouille063.png', + '/toons/grisbouille064_mini.png', + '/toons/grisbouille064.png', + '/toons/grisbouille065_mini.png', + '/toons/grisbouille065.png', + '/toons/grisbouille066_mini.png', + '/toons/grisbouille066.png', + '/toons/grisbouille067_mini.png', + '/toons/grisbouille067.png', + '/toons/grisbouille068_mini.png', + '/toons/grisbouille068.png', + '/toons/grisbouille069_mini.png', + '/toons/grisbouille069.png', + '/toons/grisbouille070_mini.png', + '/toons/grisbouille070.png', + '/toons/grisbouille071_mini.png', + '/toons/grisbouille071.png', + '/toons/grisbouille072_mini.png', + '/toons/grisbouille072.png', + '/toons/grisbouille073_mini.png', + '/toons/grisbouille073.png', + '/toons/grisbouille074_mini.png', + '/toons/grisbouille074.png', + '/toons/grisbouille075_mini.png', + '/toons/grisbouille075.png', + '/toons/grisbouille076_mini.png', + '/toons/grisbouille076.png', + '/toons/grisbouille077_mini.png', + '/toons/grisbouille077.png', + '/toons/grisbouille078_mini.png', + '/toons/grisbouille078.png', + '/toons/grisbouille079_mini.png', + '/toons/grisbouille079.png', + '/toons/grisbouille080_mini.png', + '/toons/grisbouille080.png', + '/toons/grisbouille081_mini.png', + '/toons/grisbouille081.png', + '/toons/grisbouille082_mini.png', + '/toons/grisbouille082.png', + '/toons/grisbouille083_mini.png', + '/toons/grisbouille083.png', + '/toons/grisbouille084_mini.png', + '/toons/grisbouille084.png', + '/toons/grisbouille085_mini.png', + '/toons/grisbouille085.png', + '/toons/grisbouille086_mini.png', + '/toons/grisbouille086.png', + '/toons/grisbouille087_mini.png', + '/toons/grisbouille087.png', + '/toons/grisbouille088_mini.png', + '/toons/grisbouille088.png', + '/toons/grisbouille089_mini.png', + '/toons/grisbouille089.png', + '/toons/grisbouille090_mini.png', + '/toons/grisbouille090.png', + '/toons/grisbouille091_mini.png', + '/toons/grisbouille091.png', + '/toons/grisbouille092_mini.png', + '/toons/grisbouille092.png', + '/toons/grisbouille093_mini.png', + '/toons/grisbouille093.png', + '/toons/grisbouille094_mini.png', + '/toons/grisbouille094.png', + '/toons/grisbouille095_mini.png', + '/toons/grisbouille095.png', + '/toons/grisbouille096_mini.png', + '/toons/grisbouille096.png', + '/toons/grisbouille097_mini.png', + '/toons/grisbouille097.png', + '/toons/grisbouille098_mini.png', + '/toons/grisbouille098.png', + '/toons/grisbouille099_mini.png', + '/toons/grisbouille099.png', + '/toons/grisbouille100_mini.png', + '/toons/grisbouille100.png', + '/toons/grisbouille101_mini.png', + '/toons/grisbouille101.png', + '/toons/grisbouille102_mini.png', + '/toons/grisbouille102.png', + '/toons/grisbouille103_mini.png', + '/toons/grisbouille103.png', + '/toons/grisbouille104_mini.png', + '/toons/grisbouille104.png', + '/toons/grisbouille105_mini.png', + '/toons/grisbouille105.png', + '/toons/grisbouille106_mini.png', + '/toons/grisbouille106.png', + '/toons/grisbouille107_mini.png', + '/toons/grisbouille107.png', + '/toons/grisbouille108_mini.png', + '/toons/grisbouille108.png', + '/toons/grisbouille109_mini.png', + '/toons/grisbouille109.png', + '/toons/grisbouille110_mini.png', + '/toons/grisbouille110.png', + '/toons/grisbouille111_mini.png', + '/toons/grisbouille111.png', + '/toons/grisbouille112_mini.png', + '/toons/grisbouille112.png', + '/toons/grisbouille113_mini.png', + '/toons/grisbouille113.png', + '/toons/grisbouille114_mini.png', + '/toons/grisbouille114.png', + '/toons/grisbouille115_mini.png', + '/toons/grisbouille115.png', + '/toons/grisbouille116_mini.png', + '/toons/grisbouille116.png', + '/toons/grisbouille117_mini.png', + '/toons/grisbouille117.png', + '/toons/grisbouille118_mini.png', + '/toons/grisbouille118.png', + '/toons/grisbouille119_mini.png', + '/toons/grisbouille119.png', + '/toons/grisbouille120_mini.png', + '/toons/grisbouille120.png', + '/toons/grisbouille121_mini.png', + '/toons/grisbouille121.png', + '/toons/grisbouille122_mini.png', + '/toons/grisbouille122.png', + '/toons/grisbouille123_mini.png', + '/toons/grisbouille123.png', + '/toons/grisbouille124_mini.png', + '/toons/grisbouille124.png', + '/toons/grisbouille125_mini.png', + '/toons/grisbouille125.png', + '/toons/grisbouille126_mini.png', + '/toons/grisbouille126.png', + '/toons/grisbouille127_mini.png', + '/toons/grisbouille127.png', + '/toons/grisbouille128_mini.png', + '/toons/grisbouille128.png', + '/toons/grisbouille129_mini.png', + '/toons/grisbouille129.png', + '/toons/grisbouille130_mini.png', + '/toons/grisbouille130.png', + '/toons/grisbouille131_mini.png', + '/toons/grisbouille131.png', + '/toons/grisbouille132_mini.png', + '/toons/grisbouille132.png', + '/toons/guitare_mini.png', + '/toons/guitare.png', + '/toons/harpon_mini.png', + '/toons/harpon.png', + '/toons/heureux_mini.png', + '/toons/heureux.png', + '/toons/indigne_mini.png', + '/toons/indigne.png', + '/toons/inebranlable2_mini.png', + '/toons/inebranlable2.png', + '/toons/inebranlable_mini.png', + '/toons/inebranlable.png', + '/toons/ironique_mini.png', + '/toons/ironique.png', + '/toons/journaliste_surpris_mini.png', + '/toons/journaliste_surpris.png', + '/toons/journal_mini.png', + '/toons/journal.png', + '/toons/joyeux_mini.png', + '/toons/joyeux.png', + '/toons/lama_april_mini.png', + '/toons/lama_april.png', + '/toons/la_mort_mini.png', + '/toons/la_mort.png', + '/toons/lisant_a_haute_voix_mini.png', + '/toons/lisant_a_haute_voix.png', + '/toons/lisant_mini.png', + '/toons/lisant.png', + '/toons/logo_april_mini.png', + '/toons/logo_april.png', + '/toons/marchant_mini.png', + '/toons/marchant.png', + '/toons/montre_du_doigt_mini.png', + '/toons/montre_du_doigt.png', + '/toons/moqueur_mini.png', + '/toons/moqueur.png', + '/toons/nauseeux_mini.png', + '/toons/nauseeux.png', + '/toons/negatif1_mini.png', + '/toons/negatif1.png', + '/toons/negatif2_mini.png', + '/toons/negatif2.png', + '/toons/negatif3_mini.png', + '/toons/negatif3.png', + '/toons/negatif4_mini.png', + '/toons/negatif4.png', + '/toons/negatif5_mini.png', + '/toons/negatif5.png', + '/toons/non_mais_mini.png', + '/toons/non_mais.png', + '/toons/paon_mini.png', + '/toons/paon.png', + '/toons/pedant_mini.png', + '/toons/pedant.png', + '/toons/pensif_mini.png', + '/toons/pensif.png', + '/toons/pensive_mini.png', + '/toons/pensive.png', + '/toons/positif1_mini.png', + '/toons/positif1.png', + '/toons/positif2_mini.png', + '/toons/positif2.png', + '/toons/positif3_mini.png', + '/toons/positif3.png', + '/toons/positif4_mini.png', + '/toons/positif4.png', + '/toons/positif5_mini.png', + '/toons/positif5.png', + '/toons/psst_mini.png', + '/toons/psst.png', + '/toons/sabre_laser_mini.png', + '/toons/sabre_laser.png', + '/toons/scandalise_mini.png', + '/toons/scandalise.png', + '/toons/se_cache_les_yeux_mini.png', + '/toons/se_cache_les_yeux.png', + '/toons/smiley01.png', + '/toons/smiley02.png', + '/toons/smiley03.png', + '/toons/smiley04.png', + '/toons/souriante_mini.png', + '/toons/souriante.png', + '/toons/surarme_mini.png', + '/toons/surarme.png', + '/toons/surpris_mini.png', + '/toons/surpris.png', + '/toons/toon01_mini.png', + '/toons/toon01.png', + '/toons/toon02_mini.png', + '/toons/toon02.png', + '/toons/toon03_mini.png', + '/toons/toon03.png', + '/toons/toon04_mini.png', + '/toons/toon04.png', + '/toons/toon05_mini.png', + '/toons/toon05.png', + '/toons/toon06_mini.png', + '/toons/toon06.png', + '/toons/toon07_mini.png', + '/toons/toon07.png', + '/toons/toon08_mini.png', + '/toons/toon08.png', + '/toons/toon09_mini.png', + '/toons/toon09.png', + '/toons/toon10_mini.png', + '/toons/toon10.png', + '/toons/toon11_mini.png', + '/toons/toon11.png', + '/toons/toon12_mini.png', + '/toons/toon12.png', + '/toons/toon13_mini.png', + '/toons/toon13.png', + '/toons/toon14_mini.png', + '/toons/toon14.png', + '/toons/toon15_mini.png', + '/toons/toon15.png', + '/toons/toon16_mini.png', + '/toons/toon16.png', + '/toons/toon17_mini.png', + '/toons/toon17.png', + '/toons/toon18_mini.png', + '/toons/toon18.png', + '/toons/toon19_mini.png', + '/toons/toon19.png', + '/toons/toon20_mini.png', + '/toons/toon20.png', + '/toons/toon21_mini.png', + '/toons/toon21.png', + '/toons/toon22_mini.png', + '/toons/toon22.png', + '/toons/toon23_mini.png', + '/toons/toon23.png', + '/toons/toon24_mini.png', + '/toons/toon24.png', + '/toons/toon25_mini.png', + '/toons/toon25.png', + '/toons/toon26_mini.png', + '/toons/toon26.png', + '/toons/toon27_mini.png', + '/toons/toon27.png', + '/toons/toon28_mini.png', + '/toons/toon28.png', + '/toons/toon29_mini.png', + '/toons/toon29.png', + '/toons/toon30_mini.png', + '/toons/toon30.png', + '/toons/transpirant_mini.png', + '/toons/transpirant.png', + '/toons/tsss_mini.png', + '/toons/tsss.png', + '/toons/vador_mini.png', + '/toons/vador.png', + '/toons/vieille_dame_mini.png', + '/toons/vieille_dame.png', + '/toons/voiture_mini.png', + '/toons/voiture.png' +]; +Object.freeze(RESOURCES); + +const addResourcesToCache = async (RESOURCES) => { + const cache = await caches.open('v1'); + await cache.addAll(RESOURCES); +}; + +const enableNavigationPreload = async () => { + if (self.registration.navigationPreload) { + // Enable navigation preloads! + await self.registration.navigationPreload.enable(); + } +}; + +self.addEventListener('activate', (event) => { + event.waitUntil(enableNavigationPreload()); +}); + +self.addEventListener('install', (event) => { + event.waitUntil( + addResourcesToCache(RESOURCES) + ); +}); + +const putInCache = async (request, response) => { + const cache = await caches.open('v1'); + await cache.put(request, response); +}; + +const cacheFirst = async (request) => { + const responseFromCache = await caches.match(request); + if (responseFromCache) { + return responseFromCache; + } + const responseFromNetwork = await fetch(request); + putInCache(request, responseFromNetwork.clone()); + return responseFromNetwork; +}; + +self.addEventListener('fetch', (event) => { + event.respondWith(cacheFirst(event.request)); +});