/// import { precacheAndRoute, cleanupOutdatedCaches } from 'workbox-precaching'; import { clientsClaim } from 'workbox-core'; cleanupOutdatedCaches(); precacheAndRoute(self.__WB_MANIFEST || []); self.skipWaiting(); clientsClaim(); self.addEventListener('push', (event) => { let data = {}; if (event.data) { try { data = event.data.json(); } catch { data = { title: 'FarmaFinder', body: event.data.text() }; } } const title = data.title || 'FarmaFinder'; const options = { body: data.body || '', icon: '/icon.svg', badge: '/icon.svg', data: { url: data.url || '/' }, tag: data.medicine_nregistro || undefined, renotify: Boolean(data.medicine_nregistro), }; event.waitUntil(self.registration.showNotification(title, options)); }); self.addEventListener('notificationclick', (event) => { event.notification.close(); const targetUrl = event.notification.data?.url || '/'; event.waitUntil( self.clients.matchAll({ type: 'window', includeUncontrolled: true }).then((clientList) => { for (const client of clientList) { if ('focus' in client) { client.focus(); if ('navigate' in client) client.navigate(targetUrl); return; } } if (self.clients.openWindow) return self.clients.openWindow(targetUrl); }) ); });