forked from gnss-sdr/geniuss-place
-
Notifications
You must be signed in to change notification settings - Fork 0
/
serviceworker.js
107 lines (94 loc) · 3.42 KB
/
serviceworker.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
const releaseVersion = "0.0.13";
const serviceWorkerVersion = "4";
const CACHE = `geniuss-place-${releaseVersion}-${serviceWorkerVersion}`;
const offlineFallbackPage = "offline.html";
// Install stage sets up the index page (home page) in the cache and opens a new cache
self.addEventListener("install", function (event) {
console.log("Install Event processing");
event.waitUntil(
caches.open(CACHE).then(function (cache) {
console.log("Cached offline and index pages during install");
return cache.addAll(
[
'/assets/css/main.css',
'/assets/css/style.css',
'/assets/js/main.min.js',
'/assets/images/site-logo.png',
'/assets/images/logo-gnss-sdr.png',
'/assets/images/logo-gnss-sdr-invert.png',
'/assets/images/not-found.jpg',
'/offline.html',
'/index.html',
'/assets/images/main-page-header.jpg',
'/assets/images/icon-gnss-sdr-white.png',
'/assets/images/fix.png',
'/assets/images/binder.png',
'/assets/images/radar-chart.png',
'/assets/images/geniuss.png',
'/assets/images/logo-gnss-sdr-new-release.png',
'/assets/images/logo-gsoc.png',
'/assets/images/gnss-sdr_monitoring_teaser.png',
'/assets/images/PDCA.png',
'/assets/images/Cmake-logo.png',
'/assets/images/oe-logo.png',
'/assets/images/gnss-signals-teaser.png',
'/assets/images/lego.jpg',
'/assets/images/logo-git.png'
]);
})
);
});
// If any fetch fails, it will look for the request in the cache and serve it from there first
self.addEventListener("fetch", function (event) {
if (event.request.method !== "GET") return;
event.respondWith(
fetch(event.request)
.then(function (response) {
console.log("Add page to offline cache: " + response.url);
// If request was success, add or update it in the cache
event.waitUntil(updateCache(event.request, response.clone()));
return response;
})
.catch(function (error) {
console.log("Network request Failed. Serving content from cache: " + error);
return fromCache(event.request);
})
);
});
self.addEventListener('activate', function(event) {
event.waitUntil(
caches.keys().then(function(cacheNames) {
return Promise.all(
cacheNames.filter(function(cacheName) {
// Return true if you want to remove this cache,
// but remember that caches are shared across
// the whole origin
}).map(function(cacheName) {
return caches.delete(cacheName);
})
);
})
);
});
function fromCache(request) {
// Check to see if you have it in the cache
// Return response
// If not in the cache, then return the offline page
return caches.open(CACHE).then(function (cache) {
return cache.match(request).then(function (matching) {
if (!matching || matching.status === 404) {
// The following validates that the request was for a navigation to a new document
if (request.destination !== "document" || request.mode !== "navigate") {
return Promise.reject("no-match");
}
return cache.match(offlineFallbackPage);
}
return matching;
});
});
}
function updateCache(request, response) {
return caches.open(CACHE).then(function (cache) {
return cache.put(request, response);
});
}