summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2019-07-30 13:24:54 +0300
committerAndrew Dolgov <[email protected]>2019-07-30 13:24:54 +0300
commitf6c4872502e0d571bb7117402125f8385784a459 (patch)
tree7765334d15280ee1aa75eeb59d5f71694fd8e4dc
parent1994ed155e125597a6f4b7975475a4399322b144 (diff)
resource refresh improvements
-rw-r--r--index.php27
-rw-r--r--js/index.js14
-rw-r--r--worker.js5
3 files changed, 36 insertions, 10 deletions
diff --git a/index.php b/index.php
index af90703..8cf6631 100644
--- a/index.php
+++ b/index.php
@@ -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);
+ }
}
});
diff --git a/worker.js b/worker.js
index dd8e77f..0c3fa6e 100644
--- a/worker.js
+++ b/worker.js
@@ -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) {