diff options
author | Christian Schneppe <christian@pix-art.de> | 2018-01-21 14:49:29 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2018-01-21 14:49:29 +0100 |
commit | 25437cb60d1933158c6478cc291e3257c5c6db07 (patch) | |
tree | ad21440fe24785a48b11ca2430f6b4fb178c13cb /src/main/java/de/pixart/messenger/services | |
parent | 89bea337c741d44d03a56457fe29ed5ba365d765 (diff) |
disable offline messages. postpone prekey handling until after mam catchup
Diffstat (limited to 'src/main/java/de/pixart/messenger/services')
-rw-r--r-- | src/main/java/de/pixart/messenger/services/MessageArchiveService.java | 12 | ||||
-rw-r--r-- | src/main/java/de/pixart/messenger/services/XmppConnectionService.java | 9 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/services/MessageArchiveService.java b/src/main/java/de/pixart/messenger/services/MessageArchiveService.java index ab4be5eda..a7fd66515 100644 --- a/src/main/java/de/pixart/messenger/services/MessageArchiveService.java +++ b/src/main/java/de/pixart/messenger/services/MessageArchiveService.java @@ -221,6 +221,17 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { } } + public boolean inCatchup(Account account) { + synchronized (this.queries) { + for (Query query : queries) { + if (query.account == account && query.isCatchup() && query.getWith() == null) { + return true; + } + } + } + return false; + } + public boolean queryInProgress(Conversation conversation, XmppConnectionService.OnMoreMessagesLoaded callback) { synchronized (this.queries) { for (Query query : queries) { @@ -267,6 +278,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { if (query.isCatchup() && query.getActualMessageCount() > 0) { mXmppConnectionService.getNotificationService().finishBacklog(true,query.getAccount()); } + query.account.getAxolotlService().processPostponed(); } else { final Query nextQuery; if (query.getPagingOrder() == PagingOrder.NORMAL) { diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 576050ec1..50eace97b 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -304,6 +304,15 @@ public class XmppConnectionService extends Service { mJingleConnectionManager.cancelInTransmission(); fetchRosterFromServer(account); fetchBookmarks(account); + final boolean flexible = account.getXmppConnection().getFeatures().flexibleOfflineMessageRetrieval(); + final boolean catchup = getMessageArchiveService().inCatchup(account); + if (flexible && catchup) { + sendIqPacket(account, mIqGenerator.purgeOfflineMessages(), (acc, packet) -> { + if (packet.getType() == IqPacket.TYPE.RESULT) { + Log.d(Config.LOGTAG, acc.getJid().toBareJid() + ": successfully purged offline messages"); + } + }); + } sendPresence(account); if (mPushManagementService.available(account)) { mPushManagementService.registerPushTokenOnServer(account); |