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.services.XmppConnectionService;
 8import eu.siacs.conversations.xml.Namespace;
 9import eu.siacs.conversations.xmpp.XmppConnection;
10import im.conversations.android.xmpp.model.offline.Offline;
11import im.conversations.android.xmpp.model.offline.Purge;
12import im.conversations.android.xmpp.model.stanza.Iq;
13
14public class OfflineMessagesManager extends AbstractManager {
15
16    public OfflineMessagesManager(XmppConnectionService context, XmppConnection connection) {
17        super(context, connection);
18    }
19
20    public ListenableFuture<Void> purge() {
21        final var iq = new Iq(Iq.Type.SET);
22        iq.addExtension(new Offline()).addExtension(new Purge());
23        final var future = connection.sendIqPacket(iq);
24        return Futures.transform(future, result -> null, MoreExecutors.directExecutor());
25    }
26
27    public boolean hasFeature() {
28        return getManager(DiscoManager.class)
29                .hasServerFeature(Namespace.FLEXIBLE_OFFLINE_MESSAGE_RETRIEVAL);
30    }
31}