diff --git a/sojorn_app/lib/main.dart b/sojorn_app/lib/main.dart index b7ac07e..2acbbcc 100644 --- a/sojorn_app/lib/main.dart +++ b/sojorn_app/lib/main.dart @@ -67,6 +67,7 @@ class _sojornAppState extends ConsumerState { void dispose() { _linkSub?.cancel(); _authSub?.cancel(); + _notificationSub?.cancel(); _syncManager?.dispose(); super.dispose(); } @@ -115,6 +116,7 @@ class _sojornAppState extends ConsumerState { void _initNotifications() { if (_authService.isAuthenticated) { NotificationService.instance.init(); + _listenForNotifications(); } } @@ -147,6 +149,19 @@ class _sojornAppState extends ConsumerState { _syncManager!.init(); } + StreamSubscription? _notificationSub; + + void _listenForNotifications() { + _notificationSub?.cancel(); + _notificationSub = + NotificationService.instance.foregroundMessages.listen((message) { + final context = AppRoutes.rootNavigatorKey.currentContext; + if (context != null) { + NotificationService.instance.showNotificationBanner(context, message); + } + }); + } + @override Widget build(BuildContext context) { final themeMode = ref.watch(theme_provider.themeProvider); diff --git a/sojorn_app/lib/models/notification.dart b/sojorn_app/lib/models/notification.dart index e1c63d2..ace6010 100644 --- a/sojorn_app/lib/models/notification.dart +++ b/sojorn_app/lib/models/notification.dart @@ -58,7 +58,7 @@ class AppNotification { id: json['id'] as String, type: NotificationType.values.firstWhere( (e) => e.name == json['type'], - orElse: () => NotificationType.appreciate, + orElse: () => NotificationType.like, ), actor: json['actor'] != null ? Profile.fromJson(json['actor'] as Map) diff --git a/sojorn_app/lib/screens/notifications/notifications_screen.dart b/sojorn_app/lib/screens/notifications/notifications_screen.dart index 15a4b18..b3f7986 100644 --- a/sojorn_app/lib/screens/notifications/notifications_screen.dart +++ b/sojorn_app/lib/screens/notifications/notifications_screen.dart @@ -10,6 +10,7 @@ import '../../widgets/app_scaffold.dart'; import '../../widgets/media/signed_media_image.dart'; import '../profile/viewable_profile_screen.dart'; import '../post/post_detail_screen.dart'; +import 'package:go_router/go_router.dart'; /// Notifications screen showing user activity class NotificationsScreen extends ConsumerStatefulWidget { diff --git a/sojorn_docs/DEPLOYMENT_COMPREHENSIVE.md b/sojorn_docs/DEPLOYMENT_COMPREHENSIVE.md index 8f23a40..9ea70d9 100644 --- a/sojorn_docs/DEPLOYMENT_COMPREHENSIVE.md +++ b/sojorn_docs/DEPLOYMENT_COMPREHENSIVE.md @@ -199,7 +199,7 @@ Group=patrick WorkingDirectory=/opt/sojorn/go-backend Environment=GO_ENV=production EnvironmentFile=/opt/sojorn/.env -ExecStart=/opt/sojorn/go-backend/bin/api +ExecStart=/opt/sojorn/bin/api Restart=always RestartSec=5 StandardOutput=journal