self.addEventListener('push', function (event) {
    if (event.data == null) return;
    var json = event.data.json();
    const options = { body: json.body, icon: '/favicon-303x303.png', data: { url: json.url } };
    if (json.icon) { options.icon = '/images/notify/icons128-' + json.icon + '.png'; }
    event.waitUntil(self.registration.showNotification(json.title, options));
});

self.addEventListener('notificationclick', function (event) {
    event.notification.close();
    if ((event.notification.data.url != null) && (event.notification.data.url != '')) { event.waitUntil(self.clients.openWindow(event.notification.data.url)); }
});