OfflineMessagesManager.java

 1package eu.siacs.conversations.xmpp.manager;
 2
 3import android.content.Context;
 4import com.google.common.util.concurrent.Futures;
 5import com.google.common.util.concurrent.ListenableFuture;
 6import com.google.common.util.concurrent.MoreExecutors;
 7import eu.siacs.conversations.xml.Namespace;
 8import eu.siacs.conversations.xmpp.XmppConnection;
 9import im.conversations.android.xmpp.model.offline.Offline;
10import im.conversations.android.xmpp.model.offline.Purge;
11import im.conversations.android.xmpp.model.stanza.Iq;
12
13public class OfflineMessagesManager extends AbstractManager {
14
15    public OfflineMessagesManager(Context context, XmppConnection connection) {
16        super(context, connection);
17    }
18
19    public ListenableFuture<Void> purge() {
20        final var iq = new Iq(Iq.Type.SET);
21        iq.addExtension(new Offline()).addExtension(new Purge());
22        final var future = connection.sendIqPacket(iq);
23        return Futures.transform(future, result -> null, MoreExecutors.directExecutor());
24    }
25
26    public boolean hasFeature() {
27        return getManager(DiscoManager.class)
28                .hasServerFeature(Namespace.FLEXIBLE_OFFLINE_MESSAGE_RETRIEVAL);
29    }
30}