import webPush from 'web-push';
import type { NotificationPayload } from '@/app/types/notifications';

const publicKey = process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY;
const privateKey = process.env.VAPID_PRIVATE_KEY;
const contactEmail = process.env.VAPID_CONTACT_EMAIL || 'mailto:admin@example.com';

if (!publicKey || !privateKey) {
  console.warn('[SERVER] Missing VAPID keys. Push notifications are disabled.');
} else {
  webPush.setVapidDetails(contactEmail, publicKey, privateKey);
}

export function sendPushNotification(subscription: webPush.PushSubscription, payload: NotificationPayload) {
  if (!publicKey || !privateKey) {
    return Promise.reject(new Error('VAPID keys missing'));
  }

  return webPush.sendNotification(subscription, JSON.stringify(payload)).catch((error) => {
    console.error('[webPush] Error sending notification', error);
    throw error;
  });
}

export { webPush };

