Revert "get rid of broken totalMessageCount for mam queries"

Daniel Gultsch created

This reverts commit 58c6f9bfb283f5c54695b9662b5b4b08e5d4357f.

Change summary

src/main/java/eu/siacs/conversations/parser/MessageParser.java           |  6 
src/main/java/eu/siacs/conversations/services/MessageArchiveService.java | 14 
2 files changed, 16 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/parser/MessageParser.java 🔗

@@ -271,7 +271,7 @@ public class MessageParser extends AbstractParser implements
 			packet = f.first;
 			isForwarded = true;
 			serverMsgId = result.getAttribute("id");
-			query.incrementMessageCount();
+			query.incrementTotalCount();
 		} else if (query != null) {
 			Log.d(Config.LOGTAG,account.getJid().toBareJid()+": received mam result from invalid sender");
 			return;
@@ -411,7 +411,9 @@ public class MessageParser extends AbstractParser implements
 				}
 			}
 
-			if (query == null) {
+			if (query != null) {
+				query.incrementMessageCount();
+			} else {
 				mXmppConnectionService.updateConversationUi();
 			}
 

src/main/java/eu/siacs/conversations/services/MessageArchiveService.java 🔗

@@ -201,10 +201,10 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 		Element last = set == null ? null : set.findChild("last");
 		Element first = set == null ? null : set.findChild("first");
 		Element relevant = query.getPagingOrder() == PagingOrder.NORMAL ? last : first;
-		boolean abort = (query.getStart() == 0 && query.getMessageCount() >= Config.PAGE_SIZE) || query.getMessageCount() >= Config.MAM_MAX_MESSAGES;
+		boolean abort = (query.getStart() == 0 && query.getTotalCount() >= Config.PAGE_SIZE) || query.getTotalCount() >= Config.MAM_MAX_MESSAGES;
 		if (complete || relevant == null || abort) {
 			this.finalizeQuery(query);
-			Log.d(Config.LOGTAG,query.getAccount().getJid().toBareJid().toString()+": finished mam after "+query.getMessageCount()+" messages");
+			Log.d(Config.LOGTAG,query.getAccount().getJid().toBareJid().toString()+": finished mam after "+query.getTotalCount()+" messages");
 			if (query.getWith() == null && query.getMessageCount() > 0) {
 				mXmppConnectionService.getNotificationService().finishBacklog(true);
 			}
@@ -246,6 +246,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 	}
 
 	public class Query {
+		private int totalCount = 0;
 		private int messageCount = 0;
 		private long start;
 		private long end;
@@ -278,6 +279,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 			Query query = new Query(this.account,this.start,this.end);
 			query.reference = reference;
 			query.conversation = conversation;
+			query.totalCount = totalCount;
 			query.callback = callback;
 			return query;
 		}
@@ -343,10 +345,18 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
 			return this.account;
 		}
 
+		public void incrementTotalCount() {
+			this.totalCount++;
+		}
+
 		public void incrementMessageCount() {
 			this.messageCount++;
 		}
 
+		public int getTotalCount() {
+			return this.totalCount;
+		}
+
 		public int getMessageCount() {
 			return this.messageCount;
 		}