flockstr/public/service-worker.js

49 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2023-10-17 11:08:27 -04:00
console.log("Running service worker!!!");
self.addEventListener("install", () => {
console.log("service worker installed");
});
self.addEventListener("activate", () => {
console.log("service worker activated");
});
self.addEventListener("push", function (event) {
const data = JSON.parse(event.data.text());
event.waitUntil(
registration.showNotification(data.title, {
body: data.message,
icon: "/icon-192x192.png",
data: {
url: data.url ?? "/",
},
}),
);
});
self.addEventListener("notificationclick", function (event) {
event.notification.close();
event.waitUntil(
clients
.matchAll({ type: "window", includeUncontrolled: true })
.then(function (clientList) {
if (clientList.length > 0) {
let client = clientList[0];
for (let i = 0; i < clientList.length; i++) {
if (clientList[i].focused) {
client = clientList[i];
}
}
if (event.notification.data?.url) {
return client.navigate(event.notification.data.url);
}
return client.focus();
}
if (event.notification.data?.url) {
const outcome = clients.openWindow(event.notification.data.url);
return outcome.navigate(event.notification.data.url);
}
return clients.openWindow("/");
}),
);
});