mirror of
https://github.com/jfmcbrayer/brutaldon
synced 2024-12-25 06:50:54 +01:00
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
//This is the "Offline page" service worker
|
|
{% load static %}
|
|
|
|
//Install stage sets up the offline page in the cache and opens a new cache
|
|
self.addEventListener('install', function(event) {
|
|
var offlinePage = new Request('{% static "offline.html" %}');
|
|
event.waitUntil(
|
|
fetch(offlinePage).then(function(response) {
|
|
return caches.open('pwabuilder-offline').then(function(cache) {
|
|
console.log('[PWA Builder] Cached offline page during Install'+ response.url);
|
|
return cache.put(offlinePage, response);
|
|
});
|
|
}));
|
|
});
|
|
|
|
//If any fetch fails, it will show the offline page.
|
|
//Maybe this should be limited to HTML documents?
|
|
self.addEventListener('fetch', function(event) {
|
|
event.respondWith(
|
|
fetch(event.request).catch(function(error) {
|
|
console.error( '[PWA Builder] Network request Failed. Serving offline page ' + error );
|
|
return caches.open('pwabuilder-offline').then(function(cache) {
|
|
return cache.match('{% static "offline.html" %}');
|
|
});
|
|
}
|
|
));
|
|
});
|
|
|
|
//This is a event that can be fired from your page to tell the SW to update the offline page
|
|
self.addEventListener('refreshOffline', function(response) {
|
|
return caches.open('pwabuilder-offline').then(function(cache) {
|
|
console.log('[PWA Builder] Offline page updated from refreshOffline event: '+ response.url);
|
|
return cache.put(offlinePage, response);
|
|
});
|
|
});
|