89 lines
3.0 KiB
JavaScript
89 lines
3.0 KiB
JavaScript
|
const debug = false;
|
||
|
const CACHE_NAME = 'csvxml-cache-v1';
|
||
|
const urlsToCache = [
|
||
|
|
||
|
'/index.htm',
|
||
|
'/assets/js/jszip/dist/jszip.min.js',
|
||
|
'/assets/js/csvxmlV2.min.js',
|
||
|
'/assets/css/csvxml.min.css',
|
||
|
|
||
|
'/assets/fonts/SourceSansPro-Regular.woff2',
|
||
|
|
||
|
'/json/fields.de.json',
|
||
|
'/json/fields.en.json',
|
||
|
'/json/fields.hu.json',
|
||
|
|
||
|
'/json/tls.de.json',
|
||
|
'/json/tls.en.json',
|
||
|
'/json/tls.hu.json',
|
||
|
|
||
|
];
|
||
|
|
||
|
self.addEventListener('install', function(event) {
|
||
|
// Perform install steps
|
||
|
event.waitUntil(
|
||
|
Promise.all([
|
||
|
caches.open(CACHE_NAME)
|
||
|
.then(function(cache) {
|
||
|
if (debug === true) console.log('Opened cache');
|
||
|
return cache.addAll(urlsToCache.map(url => new Request(url, {credentials: 'same-origin'})));
|
||
|
}),
|
||
|
|
||
|
])
|
||
|
);
|
||
|
});
|
||
|
|
||
|
self.addEventListener('fetch', function(event) {
|
||
|
|
||
|
if (event.request.url.startsWith(location.origin) === false) return;
|
||
|
|
||
|
event.respondWith(
|
||
|
caches.match(event.request)
|
||
|
.then(function(response) {
|
||
|
|
||
|
if (response) {
|
||
|
if (debug === true) console.log("Serving " + event.request.url + " from cache.");
|
||
|
return response;
|
||
|
}
|
||
|
|
||
|
// IMPORTANT: Clone the request. A request is a stream and
|
||
|
// can only be consumed once. Since we are consuming this
|
||
|
// once by cache and once by the browser for fetch, we need
|
||
|
// to clone the response.
|
||
|
var fetchRequest = event.request.clone();
|
||
|
|
||
|
return fetch(fetchRequest).then(
|
||
|
function(response) {
|
||
|
// Check if we received a valid response
|
||
|
if(!response || response.status !== 200 || response.type !== 'basic') {
|
||
|
return response;
|
||
|
}
|
||
|
|
||
|
var responseToCache = response.clone();
|
||
|
|
||
|
caches.open(CACHE_NAME)
|
||
|
.then(function(cache) {
|
||
|
if (debug === true) console.log("Added " + event.request.url + "to cache");
|
||
|
cache.put(event.request, responseToCache);
|
||
|
});
|
||
|
|
||
|
return response;
|
||
|
}
|
||
|
).catch(
|
||
|
() => {
|
||
|
console.log("Problem");
|
||
|
if (event.request.url.indexOf("index.php?") == -1) return;
|
||
|
else {
|
||
|
console.log("Fixing");
|
||
|
return caches.open(CACHE_NAME).then(
|
||
|
function(cache) {
|
||
|
// cache.keys().then(function(keys) { console.log(keys); })
|
||
|
// return cache.match("index.php")
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
})
|
||
|
);
|
||
|
});
|