service-worker.js

1.41 KB
09/11/2024 07:30
JS
service-worker.js
// 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('การแจ้งเตือนถูกปิด');
});