feat: Add push notification support with VAPID keys

- Backend: web-push integration with VAPID keys
- Push subscription endpoints (GET /api/push/public-key, POST /api/push/subscribe)
- In-memory subscription store
- Frontend: Auto-subscribe to push after notification permission granted
- Service Worker: Push event handler
- Send push notifications when torrents complete
- Works even when browser is closed
This commit is contained in:
spinline
2026-02-05 23:53:23 +03:00
parent 60fc887327
commit 373da566be
9 changed files with 1632 additions and 65 deletions

View File

@@ -98,20 +98,23 @@ self.addEventListener('notificationclick', (event) => {
);
});
// Push notification event (for future use)
// Push notification event
self.addEventListener('push', (event) => {
console.log('[Service Worker] Push received');
console.log('[Service Worker] Push notification received');
const data = event.data ? event.data.json() : {};
const title = data.title || 'VibeTorrent';
const options = {
body: data.message || 'New notification',
icon: '/icon-192.png',
badge: '/icon-192.png',
body: data.body || 'New notification',
icon: data.icon || '/icon-192.png',
badge: data.badge || '/icon-192.png',
tag: data.tag || 'vibetorrent-notification',
requireInteraction: false,
};
console.log('[Service Worker] Showing notification:', title, options);
event.waitUntil(
self.registration.showNotification(data.title || 'VibeTorrent', options)
self.registration.showNotification(title, options)
);
});