mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-02-27 17:11:14 +01:00
fix: remove superfluous service-worker code
This commit is contained in:
@@ -27,65 +27,3 @@ self.addEventListener('fetch', function (event) {
|
|||||||
return response;
|
return response;
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* The following code is used by nodebb-plugin-web-push
|
|
||||||
* There is a very strong argument to be made that this is plugin-specific
|
|
||||||
* code and does not belong in core.
|
|
||||||
*
|
|
||||||
* Additional R&D is required to determine how to allow plugins to inject
|
|
||||||
* code into the service worker.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Register event listener for the 'push' event.
|
|
||||||
self.addEventListener('push', function (event) {
|
|
||||||
// Keep the service worker alive until the notification is created.
|
|
||||||
const { title, body, tag, data } = event.data.json();
|
|
||||||
|
|
||||||
if (title && body) {
|
|
||||||
const icon = data.icon;
|
|
||||||
delete data.icon;
|
|
||||||
const badge = data.badge;
|
|
||||||
delete data.badge;
|
|
||||||
|
|
||||||
event.waitUntil(
|
|
||||||
self.registration.showNotification(title, { body, tag, data, icon, badge })
|
|
||||||
);
|
|
||||||
} else if (tag) {
|
|
||||||
event.waitUntil(
|
|
||||||
self.registration.getNotifications({ tag }).then((notifications) => {
|
|
||||||
notifications.forEach((notification) => {
|
|
||||||
notification.close();
|
|
||||||
});
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
self.addEventListener('notificationclick', (event) => {
|
|
||||||
event.notification.close();
|
|
||||||
let target;
|
|
||||||
if (event.notification.data && event.notification.data.url) {
|
|
||||||
target = new URL(event.notification.data.url);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This looks to see if the current is already open and focuses if it is
|
|
||||||
event.waitUntil(
|
|
||||||
self.clients
|
|
||||||
.matchAll({ type: 'window' })
|
|
||||||
.then((clientList) => {
|
|
||||||
// eslint-disable-next-line no-restricted-syntax
|
|
||||||
for (const client of clientList) {
|
|
||||||
const { hostname } = new URL(client.url);
|
|
||||||
if (target && hostname === target.hostname && 'focus' in client) {
|
|
||||||
client.postMessage({
|
|
||||||
action: 'ajaxify',
|
|
||||||
url: target.pathname,
|
|
||||||
});
|
|
||||||
return client.focus();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (self.clients.openWindow) return self.clients.openWindow(target.pathname);
|
|
||||||
})
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
Reference in New Issue
Block a user