'use strict' console.log('SW /worker/index.js Loaded...') self.addEventListener('fetch', (event) => { try { if (event.request.url.includes('/api/auth/callback/')) { // Use network only strategy for auth routes, or bypass SW completely event.respondWith(fetch(event.request)); return; } // other caching strategies... } catch (error) { console.error(error) } }); self.addEventListener('push', function (event) { console.log('SW: New push message', event) if (!(self.Notification && self.Notification.permission === 'granted')) { return } const data = JSON.parse(event.data.text()) event.waitUntil( registration.showNotification(data.title, { body: data.message, icon: '/icons/android-chrome-192x192.png' }) ) }) self.addEventListener('notificationclick', function (event) { console.log('Notification click: tag', event.notification.tag) event.notification.close() event.waitUntil( clients.matchAll({ type: 'window', includeUncontrolled: true }).then(function (clientList) { if (clientList.length > 0) { let client = clientList[0] for (let i = 0; i < clientList.length; i++) { if (clientList[i].focused) { client = clientList[i] } } return client.focus() } return clients.openWindow('/') }) ) }) // self.addEventListener('pushsubscriptionchange', function(event) { // event.waitUntil( // Promise.all([ // Promise.resolve(event.oldSubscription ? deleteSubscription(event.oldSubscription) : true), // Promise.resolve(event.newSubscription ? event.newSubscription : subscribePush(registration)) // .then(function(sub) { return saveSubscription(sub) }) // ]) // ) // })