// Service Worker for Push Notifications self.addEventListener('install', (event) => { console.log('Service Worker installing.'); self.skipWaiting(); }); self.addEventListener('activate', (event) => { console.log('Service Worker activated.'); event.waitUntil(clients.claim()); }); self.addEventListener('push', (event) => { console.log('Push notification received:', event); let data = { title: 'AutonetSellCar', body: 'You have a new notification', icon: '/icon-192.png', badge: '/badge-72.png', url: '/' }; if (event.data) { try { const payload = event.data.json(); data = { ...data, ...payload }; } catch (e) { data.body = event.data.text(); } } const options = { body: data.body, icon: data.icon || '/icon-192.png', badge: data.badge || '/badge-72.png', vibrate: [100, 50, 100], data: { url: data.url || '/', dateOfArrival: Date.now() }, actions: [ { action: 'open', title: 'View' }, { action: 'close', title: 'Close' } ] }; event.waitUntil( self.registration.showNotification(data.title, options) ); }); self.addEventListener('notificationclick', (event) => { console.log('Notification clicked:', event); event.notification.close(); if (event.action === 'close') { return; } const url = event.notification.data?.url || '/'; event.waitUntil( clients.matchAll({ type: 'window', includeUncontrolled: true }).then((clientList) => { // Check if there's already a window open for (const client of clientList) { if (client.url.includes(self.location.origin) && 'focus' in client) { client.navigate(url); return client.focus(); } } // Open a new window if none exists if (clients.openWindow) { return clients.openWindow(url); } }) ); }); self.addEventListener('notificationclose', (event) => { console.log('Notification closed:', event); });