Skip to content
Snippets Groups Projects
hub.service.js 1.34 KiB
Newer Older
Greg Fodor's avatar
WIP
Greg Fodor committed
self.addEventListener("install", function(e) {
Greg Fodor's avatar
Greg Fodor committed
  return e.waitUntil(self.skipWaiting());
Greg Fodor's avatar
WIP
Greg Fodor committed
});
Greg Fodor's avatar
WIP
Greg Fodor committed
self.addEventListener("activate", function(e) {
Greg Fodor's avatar
Greg Fodor committed
  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 }
      });
Greg Fodor's avatar
Greg Fodor committed
    })
  );
Greg Fodor's avatar
WIP
Greg Fodor committed
});

Greg Fodor's avatar
Greg Fodor committed
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();
      }
Greg Fodor's avatar
WIP
Greg Fodor committed

Greg Fodor's avatar
Greg Fodor committed
      if (self.clients.openWindow) {
        return self.clients.openWindow(e.notification.data.hub_url);
      }
    })
  );
});