PepManager.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.Jid;
10import eu.siacs.conversations.xmpp.XmppConnection;
11import im.conversations.android.xmpp.NodeConfiguration;
12import im.conversations.android.xmpp.model.Extension;
13import im.conversations.android.xmpp.model.data.Data;
14import im.conversations.android.xmpp.model.stanza.Iq;
15import java.util.Map;
16
17public class PepManager extends AbstractManager {
18
19    public PepManager(XmppConnectionService context, XmppConnection connection) {
20        super(context, connection);
21    }
22
23    public <T extends Extension> ListenableFuture<Map<String, T>> fetchItems(final Class<T> clazz) {
24        return pubSubManager().fetchItems(pepService(), clazz);
25    }
26
27    public <T extends Extension> ListenableFuture<T> fetchMostRecentItem(final Class<T> clazz) {
28        return pubSubManager().fetchMostRecentItem(pepService(), clazz);
29    }
30
31    public <T extends Extension> ListenableFuture<T> fetchMostRecentItem(
32            final String node, final Class<T> clazz) {
33        return pubSubManager().fetchMostRecentItem(pepService(), node, clazz);
34    }
35
36    public ListenableFuture<Void> publish(
37            Extension item, final String itemId, final NodeConfiguration nodeConfiguration) {
38        return pubSubManager().publish(pepService(), item, itemId, nodeConfiguration);
39    }
40
41    public ListenableFuture<Void> publishSingleton(
42            Extension item, final String node, final NodeConfiguration nodeConfiguration) {
43        return pubSubManager().publishSingleton(pepService(), item, node, nodeConfiguration);
44    }
45
46    public ListenableFuture<Void> publishSingleton(
47            final Extension item, final NodeConfiguration nodeConfiguration) {
48        return pubSubManager().publishSingleton(pepService(), item, nodeConfiguration);
49    }
50
51    public ListenableFuture<Iq> retract(final String itemId, final String node) {
52        return pubSubManager().retract(pepService(), itemId, node);
53    }
54
55    public ListenableFuture<Void> delete(final String node) {
56        final var future = pubSubManager().delete(pepService(), node);
57        return Futures.transform(future, iq -> null, MoreExecutors.directExecutor());
58    }
59
60    public ListenableFuture<Data> getNodeConfiguration(final String node) {
61        return pubSubManager().getNodeConfiguration(pepService(), node);
62    }
63
64    public boolean hasPublishOptions() {
65        return getManager(DiscoManager.class).hasAccountFeature(Namespace.PUBSUB_PUBLISH_OPTIONS);
66    }
67
68    public boolean hasConfigNodeMax() {
69        return getManager(DiscoManager.class).hasAccountFeature(Namespace.PUBSUB_CONFIG_NODE_MAX);
70    }
71
72    private PubSubManager pubSubManager() {
73        return getManager(PubSubManager.class);
74    }
75
76    private Jid pepService() {
77        return connection.getAccount().getJid().asBareJid();
78    }
79}