diff --git a/lib/models/io/chat.dart b/lib/models/io/chat.dart index 0156e31c2..4f770761d 100644 --- a/lib/models/io/chat.dart +++ b/lib/models/io/chat.dart @@ -577,8 +577,10 @@ class Chat { Chat toggleHasUnread(bool hasUnread, {bool force = false, bool clearLocalNotifications = true, bool privateMark = true}) { if (hasUnreadMessage == hasUnread && !force) return this; - hasUnreadMessage = hasUnread; - save(updateHasUnreadMessage: true); + if (!cm.isChatActive(guid) || !hasUnread) { + hasUnreadMessage = hasUnread; + save(updateHasUnreadMessage: true); + } if (kIsDesktop) { notif.clearDesktopNotificationsForChat(guid); diff --git a/lib/services/backend/java_dart_interop/method_channel_service.dart b/lib/services/backend/java_dart_interop/method_channel_service.dart index 2b280abd7..a94cfdc4b 100644 --- a/lib/services/backend/java_dart_interop/method_channel_service.dart +++ b/lib/services/backend/java_dart_interop/method_channel_service.dart @@ -134,6 +134,7 @@ class MethodChannelService extends GetxService { } case "markAsRead": case "chat-read-status-changed": + if (ls.isAlive) return; await storeStartup.future; Logger.info("Received chat status change from FCM"); Map data = jsonDecode(call.arguments); diff --git a/lib/services/network/socket_service.dart b/lib/services/network/socket_service.dart index ea56b7611..fff420142 100644 --- a/lib/services/network/socket_service.dart +++ b/lib/services/network/socket_service.dart @@ -72,11 +72,11 @@ class SocketService extends GetxService { socket.on("participant-removed", (data) => handleCustomEvent("participant-removed", data)); socket.on("participant-added", (data) => handleCustomEvent("participant-added", data)); socket.on("participant-left", (data) => handleCustomEvent("participant-left", data)); - socket.on("chat-read-status-changed", (data) => handleCustomEvent("chat-read-status-change", data)); } socket.on("new-message", (data) => handleCustomEvent("new-message", data)); socket.on("updated-message", (data) => handleCustomEvent("updated-message", data)); socket.on("typing-indicator", (data) => handleCustomEvent("typing-indicator", data)); + socket.on("chat-read-status-changed", (data) => handleCustomEvent("chat-read-status-change", data)); socket.connect(); } @@ -162,10 +162,10 @@ class SocketService extends GetxService { } void handleCustomEvent(String event, Map data) async { + Logger.info("Received $event from socket"); switch (event) { case "new-message": if (!isNullOrEmpty(data)!) { - Logger.info("Received new message from socket"); final message = Message.fromMap(data); if (message.isFromMe!) { if (data['tempGuid'] == null) { @@ -181,7 +181,6 @@ class SocketService extends GetxService { return; case "updated-message": if (!isNullOrEmpty(data)!) { - Logger.info("Received updated message from socket"); inq.queue(IncomingItem.fromMap(QueueType.updatedMessage, data)); } return;