importScripts('https://www.gstatic.com/firebasejs/9.19.1/firebase-app-compat.js'); importScripts('https://www.gstatic.com/firebasejs/9.19.1/firebase-messaging-compat.js'); // Firebase configuration const firebaseConfig = { apiKey: "AIzaSyB5C-HmErqNFRlJwM4S4wfs-arMkJRVmGA", authDomain: "wesalapp-bc676.firebaseapp.com", projectId: "wesalapp-bc676", storageBucket: "wesalapp-bc676.firebasestorage.app", messagingSenderId: "865533380916", appId: "1:865533380916:web:46725564ea0e1d4e70fd61", measurementId: "G-V4BQJQB24E" }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Firebase Messaging const messaging = firebase.messaging(); // Handle background messages messaging.onBackgroundMessage((payload) => { console.log('Received background message ', payload); const notificationTitle = payload.notification?.title || 'Wesal App'; const notificationOptions = { body: payload.notification?.body || 'You have a new notification', icon: '/icons/Icon-192.png', badge: '/icons/Icon-192.png', data: payload.data, tag: payload.data?.type || 'general', requireInteraction: true, actions: [ { action: 'open', title: 'Open App', }, { action: 'close', title: 'Close', } ] }; return self.registration.showNotification(notificationTitle, notificationOptions); }); // Handle notification clicks self.addEventListener('notificationclick', (event) => { console.log('Notification clicked:', event); event.notification.close(); if (event.action === 'close') { return; } // Handle notification click - open the app event.waitUntil( clients.matchAll({ type: 'window' }).then((clientList) => { // If the app is already open, focus it for (const client of clientList) { if (client.url === '/' && 'focus' in client) { return client.focus(); } } // Otherwise, open a new window if (clients.openWindow) { return clients.openWindow('/'); } }) ); }); // Handle push events self.addEventListener('push', (event) => { console.log('Push event received:', event); if (event.data) { const data = event.data.json(); console.log('Push data:', data); const notificationTitle = data.notification?.title || 'Wesal App'; const notificationOptions = { body: data.notification?.body || 'You have a new notification', icon: '/icons/Icon-192.png', badge: '/icons/Icon-192.png', data: data.data, tag: data.data?.type || 'general', requireInteraction: true, }; event.waitUntil( self.registration.showNotification(notificationTitle, notificationOptions) ); } }); // Handle service worker activation self.addEventListener('activate', (event) => { console.log('Service worker activated'); }); // Handle service worker installation self.addEventListener('install', (event) => { console.log('Service worker installed'); self.skipWaiting(); });