// service-worker.js
self.addEventListener('install', function(event) {
self.skipWaiting();
});
self.addEventListener('activate', function(event) {
event.waitUntil(clients.claim());
});
// จัดการเมื่อคลิกที่การแจ้งเตือน
self.addEventListener('notificationclick', function(event) {
event.notification.close();
// ถ้าคลิกปุ่ม "เปิดดู"
if (event.action === 'open') {
// เปิด URL ที่กำหนด
const urlToOpen = event.notification.data?.url || '/';
event.waitUntil(
clients.matchAll({ type: 'window' }).then(function(clientList) {
// ถ้ามีหน้าเว็บเปิดอยู่แล้ว ให้เปิดในหน้านั้น
for (const client of clientList) {
if (client.url === urlToOpen && 'focus' in client) {
return client.focus();
}
}
// ถ้าไม่มีหน้าเว็บเปิดอยู่ ให้เปิดหน้าใหม่
if (clients.openWindow) {
return clients.openWindow(urlToOpen);
}
})
);
}
});
// จัดการเมื่อปิดการแจ้งเตือน
self.addEventListener('notificationclose', function(event) {
console.log('การแจ้งเตือนถูกปิด');
});