import express from 'express'; import { getPublicKey, getPushSubscriptions, savePushSubscriptions } from '../services/webPush.js'; const router = express.Router(); // Obtener clave pública VAPID router.get('/public-key', (req, res) => { try { const publicKey = getPublicKey(); res.json({ publicKey }); } catch (error) { res.status(500).json({ error: error.message }); } }); // Suscribirse a notificaciones push router.post('/subscribe', async (req, res) => { try { const subscription = req.body; if (!subscription || !subscription.endpoint) { return res.status(400).json({ error: 'Suscripción inválida' }); } const subscriptions = getPushSubscriptions(); // Verificar si ya existe esta suscripción const existingIndex = subscriptions.findIndex( sub => sub.endpoint === subscription.endpoint ); if (existingIndex >= 0) { subscriptions[existingIndex] = subscription; } else { subscriptions.push(subscription); } savePushSubscriptions(subscriptions); console.log(`✅ Nueva suscripción push guardada. Total: ${subscriptions.length}`); res.json({ success: true, totalSubscriptions: subscriptions.length }); } catch (error) { console.error('Error guardando suscripción push:', error); res.status(500).json({ error: error.message }); } }); // Cancelar suscripción push router.post('/unsubscribe', async (req, res) => { try { const subscription = req.body; if (!subscription || !subscription.endpoint) { return res.status(400).json({ error: 'Suscripción inválida' }); } const subscriptions = getPushSubscriptions(); const filtered = subscriptions.filter( sub => sub.endpoint !== subscription.endpoint ); savePushSubscriptions(filtered); console.log(`✅ Suscripción push cancelada. Total: ${filtered.length}`); res.json({ success: true, totalSubscriptions: filtered.length }); } catch (error) { console.error('Error cancelando suscripción push:', error); res.status(500).json({ error: error.message }); } }); export default router;