From 709919a9624ed4336e9e5ae382e29cd34c795a82 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Fri, 3 May 2019 20:43:46 +0200 Subject: Experimental PWA support (#13) --- public/service-worker.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 public/service-worker.js (limited to 'public/service-worker.js') 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'); + }); + }) + ); +}); -- cgit v1.2.3