git » sdk » commit f3f1348

Return the stored versions of messages

author Stephen Paul Weber
2024-10-02 16:44:50 UTC
committer Stephen Paul Weber
2024-10-02 16:44:50 UTC
parent fb6619a75d6e287eb0b6a7b4382ab02d4eceaa70

Return the stored versions of messages

Especially this allows hydrading the inReplyTo stubs.

snikket/Chat.hx +7 -4

diff --git a/snikket/Chat.hx b/snikket/Chat.hx
index 742fb3c..3359174 100644
--- a/snikket/Chat.hx
+++ b/snikket/Chat.hx
@@ -115,22 +115,25 @@ abstract class Chat {
 	abstract public function getMessagesAround(aroundId:Null<String>, aroundTime:Null<String>, handler:(Array<ChatMessage>)->Void):Void;
 
 	private function fetchFromSync(sync: MessageSync, callback: (Array<ChatMessage>)->Void) {
-		final chatMessages = [];
+		final promises = [];
 		sync.onMessages((messageList) -> {
 			final chatMessages = [];
 			for (m in messageList.messages) {
 				switch (m) {
 					case ChatMessageStanza(message):
 						final chatMessage = prepareIncomingMessage(message, new Stanza("message", { from: message.senderId() }));
-						persistence.storeMessage(client.accountId(), chatMessage, (m)->{});
-						if (message.chatId() == chatId) chatMessages.push(message);
+						promises.push(new thenshim.Promise((resolve, reject) -> {
+							persistence.storeMessage(client.accountId(), chatMessage, resolve);
+						}));
 					case ReactionUpdateStanza(update):
 						persistence.storeReaction(client.accountId(), update, (m)->{});
 					default:
 						// ignore
 				}
 			}
-			callback(chatMessages);
+			thenshim.PromiseTools.all(promises).then((chatMessages) -> {
+				callback(chatMessages.filter((m) -> m != null && m.chatId() == chatId));
+			});
 		});
 		sync.fetchNext();
 	}