diff options
-rw-r--r-- | index.php | 27 | ||||
-rw-r--r-- | js/index.js | 14 | ||||
-rw-r--r-- | worker.js | 5 |
3 files changed, 36 insertions, 10 deletions
@@ -135,6 +135,8 @@ var index_mode = "<?php echo $mode ?>"; $(document).ready(function() { + let refreshed_files = 0; + if ('serviceWorker' in navigator) { navigator.serviceWorker .register('worker.js') @@ -143,13 +145,28 @@ }); navigator.serviceWorker.addEventListener('message', function(event) { - // invoked by service worker + + if (event.data == 'refresh-started') { + console.log('cache refresh started'); + refreshed_files = 0; + + $(".dl-progress") + .fadeIn() + .text("Loading, please wait..."); + } + + if (event.data && event.data.indexOf("refreshed:") == 0) { + ++refreshed_files; + + $(".dl-progress") + .fadeIn() + .text("Updated " + refreshed_files + " files..."); + } + if (event.data == 'client-reload') { - console.log('reloading in a moment...'); - window.setTimeout(function() { - window.location.reload() - }, 1500); + window.location.reload() } + }); } else { $(".container-main") diff --git a/js/index.js b/js/index.js index b3138b7..9c0f6a5 100644 --- a/js/index.js +++ b/js/index.js @@ -13,12 +13,16 @@ function cache_refresh(force) { if (force || !stamp || ts - stamp > 3600 * 24 * 7) { console.log('asking worker to refresh cache'); - $(".dl-progress") - .fadeIn() - .html("Loading, please wait..."); + if (navigator.serviceWorker.controller) { + navigator.serviceWorker.controller.postMessage("refresh-cache"); + localforage.setItem("epube.cache-timestamp", ts); + } else { + $(".dl-progress") + .show() + .addClass("alert-danger") + .html("Could not communicate with service worker. Try reloading the page."); - navigator.serviceWorker.controller.postMessage("refresh-cache"); - localforage.setItem("epube.cache-timestamp", ts); + } } }); @@ -3,6 +3,7 @@ const CACHE_PREFIX = 'epube'; const CACHE_NAME = CACHE_PREFIX + '-v2'; const CACHE_URLS = [ + 'manifest.json', 'img/ic_launcher_web.png', 'img/favicon.png', 'read.html', @@ -76,6 +77,8 @@ self.addEventListener('message', function(event){ if (event.data == 'refresh-cache') { console.log("refreshing cache..."); + send_broadcast('refresh-started'); + caches.open(CACHE_NAME).then(function(cache) { const promises = []; @@ -92,6 +95,8 @@ self.addEventListener('message', function(event){ console.log('got', url); + send_broadcast('refreshed:' + url); + if (resp.status == 200) { cache.put(url, resp); } else if (resp.status == 404) { |