diff --git a/fortune_generator/fortune.js b/fortune_generator/fortune.js index 434a293..9b0adfb 100644 --- a/fortune_generator/fortune.js +++ b/fortune_generator/fortune.js @@ -1,19 +1,27 @@ let ip = null; -$.getJSON("https://api.ipify.org?format=json", function(data) { - ip = data.ip; -}) +fetch("https://api.ipify.org?format=json").then(response => { + if (response.ok) { + return response.json(); + } + + throw new Error("Network response was not ok."); +}).then(res => { + ip = res.ip; + +}).catch(err => { + if ('caches' in window) { + caches.match('https://api.ipify.org?format=json').then(response => { + if (response) { + return response.json(); + } + }).then(data => { + if (ip === null && data !== undefined) { + ip = JSON.parse(data).ip; + } + }); + } +}); -if ('caches' in window) { - caches.match('https://api.ipify.org?format=json').then(response => { - if (response) { - return response.json(); - } - }).then(data => { - if (ip === null) { - ip = JSON.parse(data).ip; - } - }); -} let goodFortunes = []; let badFortunes = []; diff --git a/fortune_generator/service-worker.js b/fortune_generator/service-worker.js index ef61a1b..d0afb7d 100644 --- a/fortune_generator/service-worker.js +++ b/fortune_generator/service-worker.js @@ -2,28 +2,28 @@ let pre_cache_file_version = 'pre-v1.0.0'; let auto_cache_file_version = 'auto-v1.0.0' const ASSETS = [ - 'generators/images/lifeadventurer-192x192.png', - 'generators/images/lifeadventurer-512x512.png', - 'generators/images/lifeadventurer-180x180.png', - 'generators/images/lifeadventurer-270x270.png', - 'generators/images/lifeadventurer.jpg', + '/generators/images/lifeadventurer-192x192.png', + '/generators/images/lifeadventurer-512x512.png', + '/generators/images/lifeadventurer-180x180.png', + '/generators/images/lifeadventurer-270x270.png', + '/generators/images/lifeadventurer.jpg', 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css', 'https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js' ]; const NEED_UPDATE = [ - 'generators/fortune_generator/styles.css', - 'generators/fortune_generator/fortune.js', - 'generators/fortune_generator/matrix.js', - 'generators/fortune_generator/special.json', - 'generators/fortune_generator/fortune.json', + '/generators/fortune_generator/', + '/generators/fortune_generator/index.html', + '/generators/fortune_generator/styles.css', + '/generators/fortune_generator/fortune.js', + '/generators/fortune_generator/matrix.js', + '/generators/fortune_generator/special.json', + '/generators/fortune_generator/fortune.json', + '/generators/fortune_generator/manifest.json', + 'https://api.ipify.org/?format=json', ] -/** - * - */ - let limit_cache_size = (name, size) => { caches.open(name).then(cache => { cache.keys().then(key => { @@ -34,28 +34,27 @@ let limit_cache_size = (name, size) => { }); }; - let is_in_array = (str, array) => { let path = ''; - // Check domain of request is same of current domain. + // Check the request's domain is the same as the current domain. if (str.indexOf(self.origin) === 0) { path = str.substring(self.origin.length); // Remove https://lifeadventurer.github.io } else { path = str; // outside request } - return array.indexOf(array) > -1; + return array.indexOf(path) > -1; } // install self.addEventListener('install', event => { self.skipWaiting(); - // pre cache files + //pre-cache files event.waitUntil( caches.open(pre_cache_file_version).then(cache => { - cache.addAll(ASSETS); + // cache.addAll(ASSETS); }) ); }); @@ -76,31 +75,26 @@ self.addEventListener('activate', event => { // fetch event self.addEventListener('fetch', event => { if (is_in_array(event.request.url, ASSETS)) { - // Cache only strategy + // cache only strategy event.respondWith( - caches.match(event.request) + caches.match(event.request.url) ); } else if (is_in_array(event.request.url, NEED_UPDATE)) { - // Cache then network strategy - event.respondWith( - caches.open(auto_cache_file_version).then(async cache => { - const res = await fetch(event.request); - cache.put(event.request, res.clone()); + fetch(event.request.url).then(async response => { + if (response.ok) { + const cache = await caches.open(auto_cache_file_version); + cache.put(event.request.url, response.clone()); + return response; + } - return res; + throw new Error("Network response was not ok."); + + }).catch(async error => { + const cache = await caches.open(auto_cache_file_version); + return cache.match(event.request.url); }) - ); - } else if (event.request.url.indexOf('https://api.ipify.org?format=json') > -1) { - fetch(event.request).then(async response => { - const cache = await caches.open(auto_cache_file_version); - cache.put(event.request.url, response.clone()); - return response; - - }).catch(async () => { - const cache = await caches.open(auto_cache_file_version); - return await cache.match(event.request); - }); + ) } -}); \ No newline at end of file +});