/// /// /// var sw = /** @type {ServiceWorkerGlobalScope & typeof self} */ (self); sw.addEventListener('install', function() { sw.skipWaiting(); }); sw.addEventListener('activate', function() { sw.clients.claim(); }); sw.addEventListener('push', function(evt) { if (evt.data) { const data = evt.data.json(); console.log('Push', data); if (data.body) { sw.registration.showNotification(data.title, { body: data.body, icon: data.custom.message.user.avatar, tag: data.tag, data: data.custom.message }); } } }); sw.addEventListener('notificationclick', function(evt) { evt.waitUntil( sw.clients.matchAll().then(function(clientList) { const message = evt.notification.data; const url = message.mid ? message.rid ? `https://juick.com/m/${message.mid}#${message.rid}` : `https://juick.com/m/${message.mid}` : 'https://juick.com/pm/inbox'; if (clientList.length > 0) { for (var i = 0; i < clientList.length; i++) { if (clientList[i].url === url) { return clientList[i].focus(); } } clientList[0].navigate(url); return clientList[0].focus(); } return sw.clients.openWindow(url); }) ); });