diff --git a/pages/api/notify.ts b/pages/api/notify.ts index 09ba2cb..c3c8a89 100644 --- a/pages/api/notify.ts +++ b/pages/api/notify.ts @@ -58,8 +58,8 @@ const Notification = async (req, res) => { } - if (req.method == 'POST') { - const { subscription, id, broadcast, title = 'Hello Web Push', message = 'Your web push notification is here!' } = req.body + if (req.method == 'POST') {//title = "ССС", message = "Ще получите уведомление по този начин.") + const { subscription, id, broadcast, title = 'ССОМ', message = 'Ще получавате уведомления така.' } = req.body if (broadcast) { await broadcastPush(title, message) res.statusCode = 200 diff --git a/worker/index.js b/worker/index.js new file mode 100644 index 0000000..1033b86 --- /dev/null +++ b/worker/index.js @@ -0,0 +1,59 @@ +'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) }) +// ]) +// ) +// }) \ No newline at end of file