Add ServiceWorker implementation

This commit is contained in:
RobinLinus 2018-10-24 17:43:50 +02:00
parent 73c7430883
commit 2cd1798b15
2 changed files with 43 additions and 3 deletions

View file

@ -399,7 +399,7 @@ class Notifications {
_copyText(message, notification) {
notification.close();
if(!document.copy(message)) return;
if (!document.copy(message)) return;
this._notify('Copied text to clipboard');
}
@ -463,14 +463,20 @@ document.copy = text => {
}
if ('serviceWorker' in navigator && !window.iOS) {
// SW on iOS is buggy. see: https://stackoverflow.com/questions/18103103/failed-to-load-resource-plugin-handled-load-on-ios
if ('serviceWorker' in navigator) {
navigator.serviceWorker
.register('/service-worker.js')
.then(serviceWorker => {
console.log('Service Worker registered');
window.serviceWorker = serviceWorker
});
// don't display install banner when installed
window.addEventListener('beforeinstallprompt', e => {
if (window.matchMedia('(display-mode: standalone)').matches) {
return event.preventDefault();
}
});
}
// Background Animation

View file

@ -0,0 +1,34 @@
var CACHE_NAME = 'my-site-cache-v1';
var urlsToCache = [
'/',
'/styles.css',
'/scripts/network.js',
'/scripts/ui.js',
'/sounds/blop.mp3'
];
self.addEventListener('install', function(event) {
// Perform install steps
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('Opened cache');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
// Cache hit - return response
if (response) {
return response;
}
return fetch(event.request);
}
)
);
});