summaryrefslogtreecommitdiff
path: root/public/service-worker.js
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-05-03 20:43:46 +0200
committerDaniel Friesel <derf@finalrewind.org>2019-05-03 20:43:46 +0200
commit709919a9624ed4336e9e5ae382e29cd34c795a82 (patch)
tree5562aa8a08048666c162db008db9b69dc554d4c6 /public/service-worker.js
parent9f3b80a859a8e54856dd283b635a4abfe377feb9 (diff)
Experimental PWA support (#13)
Diffstat (limited to 'public/service-worker.js')
-rw-r--r--public/service-worker.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/public/service-worker.js b/public/service-worker.js
new file mode 100644
index 0000000..2b5c556
--- /dev/null
+++ b/public/service-worker.js
@@ -0,0 +1,47 @@
+const CACHE_NAME = 'static-cache-v10';
+const FILES_TO_CACHE = [
+ '/offline.html',
+ '/static/v10/css/materialize.min.css',
+ '/static/v10/css/material-icons.css',
+ '/static/v10/css/local.css',
+ '/static/v10/js/jquery-2.2.4.min.js',
+ '/static/v10/js/materialize.min.js',
+ '/static/v10/js/travelynx-actions.min.js',
+];
+
+self.addEventListener('install', (evt) => {
+ evt.waitUntil(
+ caches.open(CACHE_NAME).then((cache) => {
+ return cache.addAll(FILES_TO_CACHE);
+ })
+ );
+ self.skipWaiting();
+});
+
+self.addEventListener('activate', (evt) => {
+ evt.waitUntil(
+ caches.keys().then((keyList) => {
+ return Promise.all(keyList.map((key) => {
+ if (key !== CACHE_NAME) {
+ return caches.delete(key);
+ }
+ }));
+ })
+ );
+ self.clients.claim();
+});
+
+self.addEventListener('fetch', (evt) => {
+ if (evt.request.mode !== 'navigate') {
+ return;
+ }
+ evt.respondWith(
+ fetch(evt.request)
+ .catch(() => {
+ return caches.open(CACHE_NAME)
+ .then((cache) => {
+ return cache.match('offline.html');
+ });
+ })
+ );
+});