Fix chat read status getting changed while in the same chat

This commit is contained in:
Tanay Neotia
2022-12-24 18:07:14 -05:00
parent 88f490246f
commit 6f6874e70d
3 changed files with 7 additions and 5 deletions

View File

@ -577,8 +577,10 @@ class Chat {
Chat toggleHasUnread(bool hasUnread, {bool force = false, bool clearLocalNotifications = true, bool privateMark = true}) { Chat toggleHasUnread(bool hasUnread, {bool force = false, bool clearLocalNotifications = true, bool privateMark = true}) {
if (hasUnreadMessage == hasUnread && !force) return this; if (hasUnreadMessage == hasUnread && !force) return this;
if (!cm.isChatActive(guid) || !hasUnread) {
hasUnreadMessage = hasUnread; hasUnreadMessage = hasUnread;
save(updateHasUnreadMessage: true); save(updateHasUnreadMessage: true);
}
if (kIsDesktop) { if (kIsDesktop) {
notif.clearDesktopNotificationsForChat(guid); notif.clearDesktopNotificationsForChat(guid);

View File

@ -134,6 +134,7 @@ class MethodChannelService extends GetxService {
} }
case "markAsRead": case "markAsRead":
case "chat-read-status-changed": case "chat-read-status-changed":
if (ls.isAlive) return;
await storeStartup.future; await storeStartup.future;
Logger.info("Received chat status change from FCM"); Logger.info("Received chat status change from FCM");
Map<String, dynamic> data = jsonDecode(call.arguments); Map<String, dynamic> data = jsonDecode(call.arguments);

View File

@ -72,11 +72,11 @@ class SocketService extends GetxService {
socket.on("participant-removed", (data) => handleCustomEvent("participant-removed", data)); socket.on("participant-removed", (data) => handleCustomEvent("participant-removed", data));
socket.on("participant-added", (data) => handleCustomEvent("participant-added", data)); socket.on("participant-added", (data) => handleCustomEvent("participant-added", data));
socket.on("participant-left", (data) => handleCustomEvent("participant-left", 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("new-message", (data) => handleCustomEvent("new-message", data));
socket.on("updated-message", (data) => handleCustomEvent("updated-message", data)); socket.on("updated-message", (data) => handleCustomEvent("updated-message", data));
socket.on("typing-indicator", (data) => handleCustomEvent("typing-indicator", 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(); socket.connect();
} }
@ -162,10 +162,10 @@ class SocketService extends GetxService {
} }
void handleCustomEvent(String event, Map<String, dynamic> data) async { void handleCustomEvent(String event, Map<String, dynamic> data) async {
Logger.info("Received $event from socket");
switch (event) { switch (event) {
case "new-message": case "new-message":
if (!isNullOrEmpty(data)!) { if (!isNullOrEmpty(data)!) {
Logger.info("Received new message from socket");
final message = Message.fromMap(data); final message = Message.fromMap(data);
if (message.isFromMe!) { if (message.isFromMe!) {
if (data['tempGuid'] == null) { if (data['tempGuid'] == null) {
@ -181,7 +181,6 @@ class SocketService extends GetxService {
return; return;
case "updated-message": case "updated-message":
if (!isNullOrEmpty(data)!) { if (!isNullOrEmpty(data)!) {
Logger.info("Received updated message from socket");
inq.queue(IncomingItem.fromMap(QueueType.updatedMessage, data)); inq.queue(IncomingItem.fromMap(QueueType.updatedMessage, data));
} }
return; return;