* feat: web push notifications feature * Revert yarn.lock changes * added new env variables requirement in .env.example * moved useNotifications hook in packages/lib/hooks * fix: bug * use i18n * chore: move to new file * chore: add yarn.lock * Update .env.example Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> * chore: add instruction for brave browser * fix: tooltip * chore: use enum * chore * small update --------- Co-authored-by: Peer Richelsen <peeroke@gmail.com> Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Udit Takkar <udit222001@gmail.com> Co-authored-by: Peer Richelsen <peer@cal.com> Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com> Co-authored-by: unknown <adhabal2002@gmail.com> Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
41 lines
879 B
TypeScript
41 lines
879 B
TypeScript
import webpush from "web-push";
|
|
|
|
const vapidKeys = {
|
|
publicKey: process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY || "",
|
|
privateKey: process.env.VAPID_PRIVATE_KEY || "",
|
|
};
|
|
|
|
// The mail to email address should be the one at which push service providers can reach you. It can also be a URL.
|
|
webpush.setVapidDetails("https://cal.com", vapidKeys.publicKey, vapidKeys.privateKey);
|
|
|
|
type Subscription = {
|
|
endpoint: string;
|
|
keys: {
|
|
auth: string;
|
|
p256dh: string;
|
|
};
|
|
};
|
|
|
|
export const sendNotification = async ({
|
|
subscription,
|
|
title,
|
|
body,
|
|
icon,
|
|
}: {
|
|
subscription: Subscription;
|
|
title: string;
|
|
body: string;
|
|
icon?: string;
|
|
}) => {
|
|
try {
|
|
const payload = JSON.stringify({
|
|
title,
|
|
body,
|
|
icon,
|
|
});
|
|
await webpush.sendNotification(subscription, payload);
|
|
} catch (error) {
|
|
console.error("Error sending notification", error);
|
|
}
|
|
};
|