feat: add webpush and sadhna tracker

This commit is contained in:
gosangam
2026-06-08 15:48:12 +05:30
parent ecb32d2e85
commit 0334e03c3c
52 changed files with 2118 additions and 545 deletions
+48
View File
@@ -0,0 +1,48 @@
/* Prabhupāda Says — Web Push service worker.
*
* Handles incoming push messages (shows a notification) and clicks (focuses
* an existing tab or opens the target URL). The push payload is the JSON the
* BFF sends: { title, body, url, icon, tag }.
*/
self.addEventListener("install", () => self.skipWaiting());
self.addEventListener("activate", (event) =>
event.waitUntil(self.clients.claim()),
);
self.addEventListener("push", (event) => {
let data = {};
try {
data = event.data ? event.data.json() : {};
} catch {
data = { body: event.data && event.data.text ? event.data.text() : "" };
}
const title = data.title || "Prabhupāda Says";
const options = {
body: data.body || "",
icon: data.icon || "/logo_dark.png",
badge: "/logo_dark.png",
tag: data.tag || undefined,
data: { url: data.url || "/" },
};
event.waitUntil(self.registration.showNotification(title, options));
});
self.addEventListener("notificationclick", (event) => {
event.notification.close();
const url =
(event.notification.data && event.notification.data.url) || "/";
event.waitUntil(
self.clients
.matchAll({ type: "window", includeUncontrolled: true })
.then((list) => {
for (const client of list) {
if ("focus" in client) {
if ("navigate" in client) client.navigate(url);
return client.focus();
}
}
if (self.clients.openWindow) return self.clients.openWindow(url);
}),
);
});