git » sdk » commit 5072b9b

If the last message is read there are no unread

author Stephen Paul Weber
2026-03-16 13:48:29 UTC
committer Stephen Paul Weber
2026-03-16 13:49:15 UTC
parent 9b72e518d7695cf612c4fb4a73cf897ac19e286c

If the last message is read there are no unread

borogove/Chat.hx +13 -2

diff --git a/borogove/Chat.hx b/borogove/Chat.hx
index 01dc203..279e250 100644
--- a/borogove/Chat.hx
+++ b/borogove/Chat.hx
@@ -867,6 +867,11 @@ abstract class Chat {
 	}
 
 	private function recomputeUnread(): Promise<Any> {
+		if (lastMessage != null && lastMessage.serverId == readUpToId) {
+			setUnreadCount(0);
+			return Promise.resolve(null);
+		}
+
 		return persistence.getMessagesBefore(client.accountId(), chatId, null).then((messages) -> {
 			var i = messages.length;
 			while (--i >= 0) {
@@ -879,7 +884,10 @@ abstract class Chat {
 	@:allow(borogove)
 	private function markReadUpToId(upTo: String, upToBy: String): Promise<Any> {
 		if (upTo == null) return Promise.reject(null);
-		if (readUpTo() == upTo) return Promise.reject(null);
+		if (readUpToId == upTo) {
+			if (lastMessage != null && lastMessage.serverId == readUpToId) setUnreadCount(0);
+			return Promise.reject(null);
+		}
 
 		readUpToId = upTo;
 		readUpToBy = upToBy;
@@ -889,7 +897,10 @@ abstract class Chat {
 
 	private function markReadUpToMessage(message: ChatMessage): Promise<Any> {
 		if (message.serverId == null || message.chatId() != chatId) return Promise.reject(null);
-		if (readUpTo() == message.serverId) return Promise.reject(null);
+		if (readUpToId == message.serverId) {
+			if (lastMessage != null && lastMessage.serverId == readUpToId) setUnreadCount(0);
+			return Promise.reject(null);
+		}
 
 		if (readUpToId == null) {
 			return markReadUpToId(message.serverId, message.serverIdBy);