Newer
Older
return e.waitUntil(self.clients.claim());
});
self.addEventListener("push", function(e) {
const payload = JSON.parse(e.data.text());
return e.waitUntil(
self.clients.matchAll({ type: "window" }).then(function(clientList) {
for (let i = 0; i < clientList.length; i++) {
const client = clientList[i];
if (client.url.indexOf(e.notification.data.hub_id) >= 0) return;
}
return self.registration.showNotification("Hubs by Mozilla", {
body: "Someone has joined " + payload.hub_name,
image: payload.image,
icon: "/favicon.ico",
badge: "/favicon.ico",
tag: payload.hub_id,
data: { hub_url: payload.hub_url }
});
self.addEventListener("notificationclick", function(e) {
e.notification.close();
e.waitUntil(
self.clients.matchAll({ type: "window" }).then(function(clientList) {
for (let i = 0; i < clientList.length; i++) {
const client = clientList[i];
if (client.url.indexOf(e.notification.data.hub_url) >= 0 && "focus" in client) return client.focus();
}
if (self.clients.openWindow) {
return self.clients.openWindow(e.notification.data.hub_url);
}
})
);
});