41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
// public/service-worker.js
|
||
|
||
self.addEventListener("push", (event) => {
|
||
|
||
const data = event.data.json();
|
||
|
||
const options = {
|
||
body: data.body,
|
||
icon: data.icon,
|
||
badge: data.badge,
|
||
data: data.url
|
||
};
|
||
event.waitUntil(self.registration.showNotification(data.title, options));
|
||
// console.log(data);
|
||
});
|
||
|
||
self.addEventListener('notificationclick', function (event) {
|
||
// console.log("Notification click event received."); // Сообщение об активации обработчика
|
||
|
||
|
||
event.notification.close(); // Закрываем уведомление
|
||
// console.log(event)
|
||
const targetUrl = event.notification.data && event.notification.data ? event.notification.data : '/';
|
||
// console.log("Target URL to open:", targetUrl); // Выводим URL, который будет открыт
|
||
|
||
event.waitUntil(
|
||
clients.matchAll({type: 'window', includeUncontrolled: true}).then(clientList => {
|
||
for (const client of clientList) {
|
||
if (client.url === targetUrl && 'focus' in client) {
|
||
// console.log("Focusing on existing client:", client.url); // Сообщение об активации уже открытого клиента
|
||
return client.focus();
|
||
}
|
||
}
|
||
if (clients.openWindow) {
|
||
// console.log("Opening new window:", targetUrl); // Сообщение об открытии нового окна
|
||
return clients.openWindow(targetUrl);
|
||
}
|
||
})
|
||
);
|
||
});
|