git » sdk » commit 3f2723f

Merge all call state messages

author Stephen Paul Weber
2026-02-10 18:38:09 UTC
committer Stephen Paul Weber
2026-02-10 18:38:09 UTC
parent 668008a4e221e1d71078835515da427c7140f762

Merge all call state messages

borogove/persistence/Sqlite.hx +4 -3

diff --git a/borogove/persistence/Sqlite.hx b/borogove/persistence/Sqlite.hx
index f8fbb84..babd06b 100644
--- a/borogove/persistence/Sqlite.hx
+++ b/borogove/persistence/Sqlite.hx
@@ -389,7 +389,7 @@ class Sqlite implements Persistence implements KeyValueStore {
 					final message = m.versions.length == 1 ? m.versions[0] : m; // TODO: storing multiple versions at once? We never do that right now
 					([
 						accountId, message.serverId ?? "", message.serverIdBy ?? "",
-						message.localId ?? "", correctable.localId ?? correctable.serverId, correctable.syncPoint,
+						message.localId ?? "", correctable.callSid() ?? correctable.localId ?? correctable.serverId, correctable.syncPoint,
 						correctable.chatId(), correctable.senderId,
 						message.timestamp, message.status, message.direction, message.type,
 						message.asStanza().toString(), message.statusText
@@ -441,7 +441,7 @@ class Sqlite implements Persistence implements KeyValueStore {
 
 	private function getMessages(accountId: String, chatId: String, time: Null<String>, op: String): Promise<Array<ChatMessage>> {
 		var q = "WITH page AS (SELECT stanza_id, mam_id FROM messages where account_id=? AND chat_id=? AND (stanza_id IS NULL OR stanza_id='' OR stanza_id=correction_id)";
-		final params = [accountId, chatId];
+		final params: Array<Dynamic> = [accountId, chatId];
 		if (time != null) {
 			q += " AND messages.created_at " + op + "CAST(unixepoch(?, 'subsec') * 1000 AS INTEGER)";
 			params.push(time);
@@ -466,7 +466,7 @@ class Sqlite implements Persistence implements KeyValueStore {
 			messages.mam_by,
 			messages.sync_point,
 			MAX(versions.created_at)
-			FROM messages INNER JOIN messages versions USING (correction_id, sender_id) WHERE (messages.stanza_id, messages.mam_id) IN (SELECT * FROM page) AND messages.account_id=? AND messages.chat_id=? GROUP BY correction_id, messages.sender_id";
+			FROM messages INNER JOIN messages versions USING (correction_id, sender_id) WHERE (messages.stanza_id, messages.mam_id) IN (SELECT * FROM page) AND messages.account_id=? AND messages.chat_id=? GROUP BY correction_id, CASE WHEN messages.type=? THEN 'call' ELSE messages.sender_id END";
 		q += " ORDER BY messages.created_at";
 		if (op == "<" || op == "<=") q += " DESC";
 		q += ", messages.ROWID";
@@ -474,6 +474,7 @@ class Sqlite implements Persistence implements KeyValueStore {
 
 		params.push(accountId);
 		params.push(chatId);
+		params.push(MessageCall);
 
 		return db.exec(q, params).then(result -> hydrateMessages(accountId, result)).then(iter -> {
 			final arr = [];