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}