diff --git a/apps/web/lib/push.ts b/apps/web/lib/push.ts index 8e9319d..3b8bd3c 100644 --- a/apps/web/lib/push.ts +++ b/apps/web/lib/push.ts @@ -1,16 +1,21 @@ 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! -); +let vapidInitialized = false; +function ensureVapid() { + if (vapidInitialized) return; + const pub = process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY; + const priv = process.env.VAPID_PRIVATE_KEY; + if (!pub || !priv) throw new Error("VAPID keys not configured"); + webpush.setVapidDetails("mailto:contact@epicure.app", pub, priv); + vapidInitialized = true; +} export async function sendPushNotification( userId: string, notification: { title: string; body: string; url?: string } ): Promise { + ensureVapid(); const subs = await db .select() .from(pushSubscriptions)