Add in-app + real-time notifications (SignalR/mock, Iran-friendly)

- AppNotification + OnlineService.onNotification (hub event + mock periodic) —
  no FCM/APNs (blocked in Iran); uses the existing realtime channel
- notification-store + pushNotification(); 🔔 bell with unread badge in TopBar,
  notifications screen, global toaster (plays notify sfx)
- Wired events: daily reward, post-match achievements, friend requests
- Closed-app push (Pushe/Najva/Chabok) noted as a later step (needs provider keys)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-04 15:52:06 +03:30
parent e02d976dda
commit 2d2352dfe8
13 changed files with 291 additions and 3 deletions
+6
View File
@@ -226,6 +226,9 @@ const fa: Dict = {
"reactions.title": "شکلک",
"stickers.title": "استیکر",
"notif.title": "اعلان‌ها",
"notif.empty": "اعلانی ندارید",
"settings.audio": "تنظیمات صدا",
"settings.sound": "افکت صدا",
"settings.music": "موسیقی پس‌زمینه",
@@ -449,6 +452,9 @@ const en: Dict = {
"reactions.title": "Emoji",
"stickers.title": "Stickers",
"notif.title": "Notifications",
"notif.empty": "No notifications yet",
"settings.audio": "Audio",
"settings.sound": "Sound effects",
"settings.music": "Background music",