git » sdk » commit 14a21ff

Expose last message

author Stephen Paul Weber
2025-10-22 04:45:48 UTC
committer Stephen Paul Weber
2025-10-22 04:45:48 UTC
parent 6c4e3cd672f70296fd4e8ef2385c14d9edbf9e22

Expose last message

borogove/Chat.hx +5 -9
borogove/Client.hx +1 -1

diff --git a/borogove/Chat.hx b/borogove/Chat.hx
index 4d10c24..8316fca 100644
--- a/borogove/Chat.hx
+++ b/borogove/Chat.hx
@@ -81,10 +81,13 @@ abstract class Chat {
 		Is this chat blocked?
 	**/
 	public var isBlocked(default, null): Bool = false;
+	/**
+		The most recent message in this chat
+	**/
+	public var lastMessage(default, null): Null<ChatMessage>;
 	@:allow(borogove)
 	private var extensions: Stanza;
 	private var _unreadCount = 0;
-	private var lastMessage: Null<ChatMessage>;
 	private var readUpToId: Null<String>;
 	@:allow(borogove)
 	private var readUpToBy: Null<String>;
@@ -412,13 +415,6 @@ abstract class Chat {
 	**/
 	abstract public function lastMessageId():Null<String>;
 
-	/**
-		The timestamp of the most recent message in this chat
-	**/
-	public function lastMessageTimestamp():Null<String> {
-		return lastMessage?.timestamp;
-	}
-
 	@:allow(borogove)
 	private function updateFromBookmark(item: Stanza) {
 		final conf = item.getChild("conference", "urn:xmpp:bookmarks:1");
@@ -1230,7 +1226,7 @@ class Channel extends Chat {
 					inSync = true;
 					sync = null;
 					final lastFromSync = chatMessages[chatMessages.length - 1];
-					if (lastFromSync != null && (lastMessageTimestamp() == null || Reflect.compare(lastFromSync.timestamp, lastMessageTimestamp()) > 0)) {
+					if (lastFromSync != null && (lastMessage?.timestamp == null || Reflect.compare(lastFromSync.timestamp, lastMessage?.timestamp) > 0)) {
 						setLastMessage(lastFromSync);
 						client.sortChats();
 					}
diff --git a/borogove/Client.hx b/borogove/Client.hx
index a3e012a..d722668 100644
--- a/borogove/Client.hx
+++ b/borogove/Client.hx
@@ -1391,7 +1391,7 @@ class Client extends EventEmitter {
 		chats.sort((a, b) -> {
 			if (a.uiState == Pinned && b.uiState != Pinned) return -1;
 			if (b.uiState == Pinned && a.uiState != Pinned) return 1;
-			return -Reflect.compare(a.lastMessageTimestamp() ?? "0", b.lastMessageTimestamp() ?? "0");
+			return -Reflect.compare(a.lastMessage?.timestamp ?? "0", b.lastMessage?.timestamp ?? "0");
 		});
 	}