From 61309f3a901817c5940a936191de45e6ac9859ae Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 3 Sep 2024 13:14:30 -0500 Subject: [PATCH] If we don't get up to now, at least get recent messages --- src/main/java/eu/siacs/conversations/Config.java | 1 + .../services/MessageArchiveService.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index 917253e77d58c30010390e964a30dafa63ef1db5..03e7fd399f40867342685fdaaadeb01bd5176245 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -145,6 +145,7 @@ public final class Config { public static final boolean USE_LMC_VERSION_1_1 = true; + public static final long MAM_MIN_CATCHUP = MILLISECONDS_IN_DAY * 2; public static final long MAM_MAX_CATCHUP = MILLISECONDS_IN_DAY * 5; public static final int MAM_MAX_MESSAGES = 750; diff --git a/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java b/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java index 91913aadd37f8a74761895fee9f0329633d711dd..559f49ef915f86285a4d3fc5e702486c62d9dad7 100644 --- a/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java +++ b/src/main/java/eu/siacs/conversations/services/MessageArchiveService.java @@ -387,6 +387,15 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { if (query.isCatchup() && query.getActualMessageCount() > 0) { mXmppConnectionService.getNotificationService().finishBacklog(true, query.getAccount()); } + if (query.isCatchup() && query.getPagingOrder() == PagingOrder.NORMAL && !complete) { + // Going forward we stopped without completing due to limits + // So we don't have the most recent messages yet + synchronized (this.queries) { + final var q = new Query(query.getConversation(), new MamReference(System.currentTimeMillis() - Config.MAM_MIN_CATCHUP), 0, true, PagingOrder.REVERSE); + this.queries.add(q); + this.execute(q); + } + } processPostponed(query); } else { final Query nextQuery; @@ -492,6 +501,11 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { public final Version version; + Query(Conversation conversation, MamReference start, long end, boolean catchup, PagingOrder order) { + this(conversation, start, end, catchup); + this.pagingOrder = order; + } + Query(Conversation conversation, MamReference start, long end, boolean catchup) { this(conversation.getAccount(), Version.get(conversation.getAccount(), conversation), catchup ? start : start.timeOnly(), end); this.conversation = conversation;