git » sdk » commit 9282d5a

Get count and progress for MAM

author Stephen Paul Weber
2025-03-04 16:21:40 UTC
committer Stephen Paul Weber
2025-03-04 16:21:40 UTC
parent a04f08a1bcec59067e6502ced2e5631389d7b6a7

Get count and progress for MAM

snikket/MessageSync.hx +3 -1
snikket/queries/MAMQuery.hx +2 -0

diff --git a/snikket/MessageSync.hx b/snikket/MessageSync.hx
index 2a2c325..e2853d7 100644
--- a/snikket/MessageSync.hx
+++ b/snikket/MessageSync.hx
@@ -25,7 +25,8 @@ class MessageSync {
 	private var serviceJID:String;
 	private var handler:MessageListHandler;
 	private var errorHandler:(Stanza)->Void;
-	private var lastPage:ResultSetPageResult;
+	public var lastPage(default, null):ResultSetPageResult;
+	public var progress(default, null): Int = 0;
 	private var complete:Bool = false;
 	private var newestPageFirst:Bool = true;
 	public var jmi(default, null): Map<String, Stanza> = [];
@@ -60,6 +61,7 @@ class MessageSync {
 		}
 		var query = new MAMQuery(filter, serviceJID);
 		var resultHandler = stream.on("message", function (event) {
+			progress++;
 			var message:Stanza = event.stanza;
 			var from = message.attr.exists("from") ? message.attr.get("from") : client.accountId();
 			if (from != serviceJID) { // Only listen for results from the JID we queried
diff --git a/snikket/queries/MAMQuery.hx b/snikket/queries/MAMQuery.hx
index ffd1ef3..6a37ec4 100644
--- a/snikket/queries/MAMQuery.hx
+++ b/snikket/queries/MAMQuery.hx
@@ -108,11 +108,13 @@ class MAMQuery extends GenericQuery {
 				return null;
 			}
 			var rsmInfo = fin.getChild("set", "http://jabber.org/protocol/rsm");
+			final count = rsmInfo.getChildText("count");
 			result = {
 				complete: fin.attr.get("complete") == "true" || fin.attr.get("complete") == "1",
 				page: {
 					first: rsmInfo.getChildText("first"),
 					last: rsmInfo.getChildText("last"),
+					count: count == null ? null : Std.parseInt(count)
 				}
 			};
 		}