26 lines
848 B
JavaScript
26 lines
848 B
JavaScript
function parseEventData(event) {
|
|
try {
|
|
return event.data.json();
|
|
} catch (e) {
|
|
console.error('Failed to parse event data - is payload valid? .text():\n', event.data.text());
|
|
return null
|
|
}
|
|
}
|
|
|
|
self.addEventListener('push', function (event) {
|
|
const payload = parseEventData(event);
|
|
if (!payload) return;
|
|
|
|
// options: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/showNotification#options
|
|
self.registration.showNotification(payload.title || 'AnythingLLM', {
|
|
...payload,
|
|
icon: '/favicon.png',
|
|
});
|
|
});
|
|
|
|
self.addEventListener('notificationclick', function (event) {
|
|
event.notification.close();
|
|
const { onClickUrl = null } = event.notification.data || {};
|
|
if (!onClickUrl) return;
|
|
event.waitUntil(clients.openWindow(onClickUrl));
|
|
}); |