| const CACHE_NAME = 'melofy-cache-v1'; |
| const urlsToCache = [ |
| '/', |
| '/index.html' |
| |
| ]; |
|
|
| |
| self.addEventListener('install', event => { |
| event.waitUntil( |
| caches.open(CACHE_NAME) |
| .then(cache => { |
| console.log('Opened cache'); |
| return cache.addAll(urlsToCache); |
| }) |
| ); |
| self.skipWaiting(); |
| }); |
|
|
| |
| self.addEventListener('fetch', event => { |
| |
| if (event.request.method !== 'GET') { |
| return; |
| } |
|
|
| event.respondWith( |
| caches.match(event.request) |
| .then(response => { |
| |
| if (response) { |
| return response; |
| } |
|
|
| |
| return fetch(event.request).then( |
| response => { |
| |
| if(!response || response.status !== 200 || response.type !== 'basic') { |
| return response; |
| } |
|
|
| |
| |
| |
| const responseToCache = response.clone(); |
|
|
| caches.open(CACHE_NAME) |
| .then(cache => { |
| |
| |
| if (!event.request.url.includes('/search/') && !event.request.url.includes('/lyrics')) { |
| cache.put(event.request, responseToCache); |
| } |
| }); |
|
|
| return response; |
| } |
| ); |
| }) |
| ); |
| }); |
|
|
| |
| self.addEventListener('activate', event => { |
| const cacheWhitelist = [CACHE_NAME]; |
| event.waitUntil( |
| caches.keys().then(cacheNames => { |
| return Promise.all( |
| cacheNames.map(cacheName => { |
| if (cacheWhitelist.indexOf(cacheName) === -1) { |
| return caches.delete(cacheName); |
| } |
| }) |
| ); |
| }) |
| ); |
| return self.clients.claim(); |
| }); |
|
|