Nextuschat / src /chat /push.js
quan3s's picture
Upload 2 files
3970bfe verified
Raw
History Blame Contribute Delete
940 Bytes
import webpush from "web-push";
import { getPushSub, deletePushSub } from "../db/index.js";
import { logger } from "../lib/logger.js";
const VAPID_PUBLIC = process.env.VAPID_PUBLIC ?? "BEl62iUYgUivxIkv69yViEuiBIa-Ib9-SkvMeAtA3LFgDzkrxZJjSgSnfckjBJuBkr3qBUYIHBQFLXYp5Nksh8U";
const VAPID_PRIVATE = process.env.VAPID_PRIVATE ?? "UUxI4O8-FbRouAevSmBQ6co62ggea4YFIouBBY0B7f4";
const VAPID_EMAIL = process.env.VAPID_EMAIL ?? "mailto:admin@nexus.vn";
webpush.setVapidDetails(VAPID_EMAIL, VAPID_PUBLIC, VAPID_PRIVATE);
export function getVapidPublicKey() {
return VAPID_PUBLIC;
}
export async function sendPush(toEmail, payload) {
try {
const sub = await getPushSub(toEmail);
if (!sub) return;
await webpush.sendNotification(sub, JSON.stringify(payload));
} catch (err) {
if (err?.statusCode === 410) {
await deletePushSub(toEmail);
}
logger.warn({ toEmail, err: err?.message }, "Push failed");
}
}