1package im.conversations.android.xmpp.model.unique;
2
3import com.google.common.collect.ImmutableMap;
4import eu.siacs.conversations.xmpp.Jid;
5import im.conversations.android.annotation.XmlElement;
6import im.conversations.android.xmpp.model.Extension;
7import java.util.Map;
8
9@XmlElement
10public class StanzaId extends Extension {
11
12 public StanzaId() {
13 super(StanzaId.class);
14 }
15
16 public Jid getBy() {
17 return this.getAttributeAsJid("by");
18 }
19
20 public String getId() {
21 return this.getAttribute("id");
22 }
23
24 public static String get(
25 final im.conversations.android.xmpp.model.stanza.Message packet, final Jid by) {
26 final var builder = new ImmutableMap.Builder<Jid, String>();
27 for (final var stanzaId : packet.getExtensions(StanzaId.class)) {
28 final var id = stanzaId.getId();
29 final var byAttribute = Jid.Invalid.getNullForInvalid(stanzaId.getBy());
30 if (byAttribute != null && id != null) {
31 builder.put(byAttribute, id);
32 }
33 }
34 final Map<Jid, String> byToId;
35 try {
36 byToId = builder.buildOrThrow();
37 } catch (final IllegalArgumentException e) {
38 return null;
39 }
40 return byToId.get(by);
41 }
42}