1package im.conversations.android.xmpp.model.capabilties;
2
3import androidx.annotation.NonNull;
4import androidx.annotation.Nullable;
5import im.conversations.android.xmpp.model.Extension;
6
7public interface EntityCapabilities {
8
9 <E extends Extension> E getExtension(final Class<E> clazz);
10
11 default NodeHash getCapabilities() {
12 final String node;
13 final im.conversations.android.xmpp.EntityCapabilities.Hash hash;
14 final var capabilities = this.getExtension(Capabilities.class);
15 final var legacyCapabilities = this.getExtension(LegacyCapabilities.class);
16 if (capabilities != null) {
17 node = null;
18 hash = capabilities.getHash();
19 } else if (legacyCapabilities != null) {
20 node = legacyCapabilities.getNode();
21 hash = legacyCapabilities.getHash();
22 } else {
23 return null;
24 }
25 return hash == null ? null : new NodeHash(node, hash);
26 }
27
28 class NodeHash {
29 public final String node;
30 public final im.conversations.android.xmpp.EntityCapabilities.Hash hash;
31
32 private NodeHash(
33 @Nullable String node,
34 @NonNull final im.conversations.android.xmpp.EntityCapabilities.Hash hash) {
35 this.node = node;
36 this.hash = hash;
37 }
38 }
39}