import webpush from 'web-push'; if (!process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY || !process.env.VAPID_PRIVATE_KEY) { console.warn("VAPID keys are missing. Push notifications will not work."); } else { webpush.setVapidDetails( process.env.VAPID_SUBJECT || 'mailto:admin@localhost', process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY, process.env.VAPID_PRIVATE_KEY ); } interface PushSubscriptionData { endpoint: string; p256dh: string; auth: string; } export async function sendPushNotification(subscription: PushSubscriptionData, payload: any) { try { await webpush.sendNotification({ endpoint: subscription.endpoint, keys: { p256dh: subscription.p256dh, auth: subscription.auth, } }, JSON.stringify(payload)); return { success: true, statusCode: 201 }; } catch (error: any) { if (error.statusCode === 410 || error.statusCode === 404) { // Subscription is gone return { success: false, statusCode: error.statusCode }; } console.error("Error sending push:", error); return { success: false, statusCode: error.statusCode || 500 }; } }