76 lines
1.7 KiB
JavaScript
76 lines
1.7 KiB
JavaScript
const cacheName = "v1";
|
|
|
|
self.addEventListener("install", function(e) {
|
|
e.waitUntil(
|
|
caches.open(cacheName).then(function(cache) {
|
|
return cache.addAll([
|
|
'/',
|
|
'/style.css',
|
|
'/app.js',
|
|
'/jquery-3.3.1.min.js',
|
|
'/favicon.ico',
|
|
'/fonts/Parisine-Bold.eot',
|
|
'/fonts/Parisine-BoldItalic.eot',
|
|
'/fonts/Parisine-BoldItalic.woff',
|
|
'/fonts/Parisine-Bold.woff',
|
|
'/fonts/Parisine-Italic.ttf',
|
|
'/fonts/Parisine-Italic.woff',
|
|
'/fonts/Parisine-Regular.eot',
|
|
'/fonts/Parisine-Regular.woff',
|
|
'/bootstrap.min.css',
|
|
'/logo.svg',
|
|
]);
|
|
})
|
|
)
|
|
})
|
|
|
|
self.addEventListener("activate", function(e) {
|
|
e.waitUntil(
|
|
caches.keys().then(function(cacheNames) {
|
|
return Promise.all(cacheNames.map(function(cName) {
|
|
if (cName != cacheName) {
|
|
return caches.delete(cName);
|
|
}
|
|
}))
|
|
})
|
|
)
|
|
})
|
|
|
|
self.addEventListener("fetch", function(e) {
|
|
var url = e.request.url.split("/");
|
|
|
|
var nreq = e.request.clone();
|
|
if (url[3] == "metros" || url[3] == "rers" || url[3] == "bus" || url[3] == "tramways" || url[3] == "noctiliens") {
|
|
nreq = new Request(url.slice(0,3).join("/") + "/");
|
|
}
|
|
|
|
e.respondWith(
|
|
caches.match(nreq)
|
|
.then(function(response) {
|
|
if (response) {
|
|
// Return the cached version
|
|
return response;
|
|
}
|
|
|
|
var requestClone = nreq.clone();
|
|
return fetch(requestClone)
|
|
.then(function(response) {
|
|
|
|
if(!response || response.type !== 'basic') {
|
|
return response;
|
|
}
|
|
|
|
if (!(url[3] == "api" && (url[4] == "traffic" || url[4] == "schedules"))) {
|
|
var responseClone = response.clone();
|
|
caches.open(cacheName).then(function(cache) {
|
|
cache.put(nreq, responseClone);
|
|
});
|
|
}
|
|
|
|
// Return the response
|
|
return response;
|
|
})
|
|
})
|
|
);
|
|
})
|