feat : ask for noti
This commit is contained in:
@@ -1,26 +1,9 @@
|
||||
"use client";
|
||||
|
||||
export async function subscribeCommissionPush(scope: "customer" | "admin", publicKey: string) {
|
||||
if (await Notification.requestPermission() !== "granted") return false;
|
||||
await syncCommissionPush(scope, publicKey);
|
||||
return true;
|
||||
}
|
||||
|
||||
export async function syncCommissionPush(scope: "customer" | "admin", publicKey: string) {
|
||||
const registration = await navigator.serviceWorker.register("/commission-push-sw.js", { scope: "/" });
|
||||
const subscription = await registration.pushManager.getSubscription() ??
|
||||
await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: publicKey });
|
||||
const response = await fetch("/api/commission/push-subscription", { method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ ...subscription.toJSON(), scope }) });
|
||||
if (!response.ok) throw new Error("Could not save push subscription");
|
||||
sessionStorage.setItem(`commission-push-synced-${scope}`, "1");
|
||||
}
|
||||
|
||||
export async function unsubscribeCommissionPush() {
|
||||
sessionStorage.removeItem("commission-push-synced-customer");
|
||||
sessionStorage.removeItem("commission-push-synced-admin");
|
||||
for (const key of Object.keys(sessionStorage)) if (key.startsWith("comment-push-synced-")) sessionStorage.removeItem(key);
|
||||
for (const key of Object.keys(sessionStorage)) if (key.startsWith("comment-push-synced-") || key.startsWith("site-push-synced-")) sessionStorage.removeItem(key);
|
||||
if (!("serviceWorker" in navigator)) return;
|
||||
const registration = await navigator.serviceWorker.getRegistration("/");
|
||||
const subscription = await registration?.pushManager.getSubscription();
|
||||
|
||||
Reference in New Issue
Block a user