81 lines
2.6 KiB
JavaScript
81 lines
2.6 KiB
JavaScript
'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())
|
|
console.log('SW: Push data', data)
|
|
actions: [
|
|
//font awesome icons
|
|
{ action: 'accept', title: 'Accept', icon: 'fa fa-check' },
|
|
{ action: 'decline', title: 'Decline', icon: 'fa fa-times' }
|
|
]
|
|
event.waitUntil(
|
|
registration.showNotification(data.title, {
|
|
body: data.message,
|
|
icon: '/favicon.ico',
|
|
actions: [...data.actions, { action: 'close', title: 'Close', icon: 'fa fa-times' }],
|
|
data: data.url,
|
|
})
|
|
)
|
|
})
|
|
|
|
self.addEventListener('notificationclick', function (event) {
|
|
console.log('Notification click: tag', event.notification.tag, 'action', event.action)
|
|
event.notification.close()
|
|
switch (event.action) {
|
|
case 'accept':
|
|
console.log('User accepted the action.');
|
|
// handle acceptance
|
|
break;
|
|
case 'decline':
|
|
console.log('User declined the action.');
|
|
// handle decline
|
|
break;
|
|
default:
|
|
// handle other cases
|
|
break;
|
|
}
|
|
console.log(event)
|
|
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) })
|
|
// ])
|
|
// )
|
|
// })
|