import webpush from "web-push"; import { db, pushSubscriptions, eq } from "@epicure/db"; webpush.setVapidDetails( "mailto:contact@epicure.app", process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY!, process.env.VAPID_PRIVATE_KEY! ); export async function sendPushNotification( userId: string, notification: { title: string; body: string; url?: string } ): Promise { const subs = await db .select() .from(pushSubscriptions) .where(eq(pushSubscriptions.userId, userId)); const payload = JSON.stringify({ title: notification.title, body: notification.body, url: notification.url ?? "/", }); await Promise.allSettled( subs.map((sub) => webpush.sendNotification( { endpoint: sub.endpoint, keys: { p256dh: sub.p256dh, auth: sub.auth } }, payload ) ) ); }