feat: Implement push notification suppression for active chats, prevent duplicate self-messages, update the chat typing indicator, and add back buttons to static screens.
This commit is contained in:
@@ -29,6 +29,10 @@ class PushNotificationService {
|
||||
/// Callback when user taps a notification — set by the app to navigate.
|
||||
void Function(String? actionUrl)? onNotificationTap;
|
||||
|
||||
/// The conversation ID currently being viewed — suppress message push
|
||||
/// notifications for this conversation to avoid self-notifications.
|
||||
String? activeConversationId;
|
||||
|
||||
/// Initialize Firebase Messaging and local notifications.
|
||||
Future<void> initialize() async {
|
||||
if (_initialized) return;
|
||||
@@ -159,6 +163,14 @@ class PushNotificationService {
|
||||
final notification = message.notification;
|
||||
if (notification == null) return;
|
||||
|
||||
// Suppress message push notifications when user is viewing that conversation
|
||||
final msgType = message.data['type'] as String?;
|
||||
final convId = message.data['conversationId'] as String?;
|
||||
if (msgType == 'message' && convId != null && convId == activeConversationId) {
|
||||
debugPrint('[FCM] Suppressed notification — user is viewing conversation $convId');
|
||||
return;
|
||||
}
|
||||
|
||||
// Show local notification on Android (iOS handles it natively)
|
||||
if (Platform.isAndroid) {
|
||||
_localNotifications?.show(
|
||||
|
||||
@@ -15,7 +15,8 @@ int _currentTabIndex(BuildContext context) {
|
||||
return 1;
|
||||
}
|
||||
if (location.startsWith('/profile')) return 3;
|
||||
return 0; // home and everything else
|
||||
if (location == '/home') return 0;
|
||||
return -1; // other pages (about, contact, faq, etc.) — no tab highlighted
|
||||
}
|
||||
|
||||
class AppBottomNavBar extends ConsumerWidget {
|
||||
|
||||
Reference in New Issue
Block a user