aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-01-21 14:49:29 +0100
committerChristian Schneppe <christian@pix-art.de>2018-01-21 14:49:29 +0100
commit25437cb60d1933158c6478cc291e3257c5c6db07 (patch)
treead21440fe24785a48b11ca2430f6b4fb178c13cb /src/main/java/de/pixart/messenger/services
parent89bea337c741d44d03a56457fe29ed5ba365d765 (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.java12
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java9
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);