6066b5ec49773652dee73e5ed9fb889e18f5dcd2
Replaces the AlarmManager-based polling (wake every 60s, open/close WebSocket connections) with a persistent WebSocket subscription to a Nostr relay. Events are delivered in real-time via the open connection. A partial WakeLock keeps the connection alive through Doze mode (same approach as Signal without FCM). - Add NotificationRelayService: foreground service with persistent WebSocket, exponential backoff reconnection, network-aware reconnect, relay rotation on failure, and SharedPreferences config listener - Refactor NostrPoller into notification dispatcher with metadata caching (SharedPreferences-based, avoids redundant WebSocket connections for repeat authors) - Remove NotificationService (AlarmManager scheduler) and PollAlarmReceiver (WakeLock-based polling) - Remove SCHEDULE_EXACT_ALARM permission (no longer needed) - Disable web-layer background refetch on native (persistent connection handles it)
Description
Languages
TypeScript
95.7%
Java
1.5%
JavaScript
0.9%
Swift
0.9%
CSS
0.5%
Other
0.4%