aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2018-12-14 20:39:11 +0100
committerChristian Schneppe <christian@pix-art.de>2018-12-14 20:39:11 +0100
commit7967a35cd3fa9983a559c937a7ab24ef815d87c6 (patch)
treefba2f5092021aca60c501eaa414bf9c9c8029dde /src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
parent483d0e260489d82cbc72998a4610fab37d19c92a (diff)
check mam preference for mam:2 namespace and purge offline only if set
Diffstat (limited to 'src/main/java/de/pixart/messenger/xmpp/XmppConnection.java')
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/XmppConnection.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
index a40670c55..c92653444 100644
--- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
+++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
@@ -162,6 +162,7 @@ public class XmppConnection implements Runnable {
private long lastConnect = 0;
private long lastSessionStarted = 0;
private long lastDiscoStarted = 0;
+ private boolean isMamPreferenceAlways = false;
private AtomicInteger mPendingServiceDiscoveries = new AtomicInteger(0);
private AtomicBoolean mWaitForDisco = new AtomicBoolean(true);
private AtomicBoolean mWaitingForSmCatchup = new AtomicBoolean(false);
@@ -1195,6 +1196,7 @@ public class XmppConnection implements Runnable {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": server caps came from cache");
disco.put(Jid.of(account.getServer()), discoveryResult);
}
+ discoverMamPreferences();
sendServiceDiscoveryInfo(account.getJid().asBareJid());
if (!requestDiscoItemsFirst) {
sendServiceDiscoveryItems(Jid.of(account.getServer()));
@@ -1238,6 +1240,21 @@ public class XmppConnection implements Runnable {
});
}
+ private void discoverMamPreferences() {
+ IqPacket request = new IqPacket(IqPacket.TYPE.GET);
+ request.addChild("prefs", MessageArchiveService.Version.MAM_2.namespace);
+ sendIqPacket(request, (account, response) -> {
+ if (response.getType() == IqPacket.TYPE.RESULT) {
+ Element prefs = response.findChild("prefs", MessageArchiveService.Version.MAM_2.namespace);
+ isMamPreferenceAlways = "always".equals(prefs == null ? null : prefs.getAttribute("default"));
+ }
+ });
+ }
+
+ public boolean isMamPreferenceAlways() {
+ return isMamPreferenceAlways;
+ }
+
private void finalizeBind() {
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": online with resource " + account.getResource());
if (bindListener != null) {