]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore.java
fb1e188b76962cf1760a07a437518fa104c2eb3e
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / storage / recipients / LegacyRecipientStore.java
1 package org.asamk.signal.manager.storage.recipients;
2
3 import com.fasterxml.jackson.annotation.JsonProperty;
4 import com.fasterxml.jackson.core.JsonParser;
5 import com.fasterxml.jackson.databind.DeserializationContext;
6 import com.fasterxml.jackson.databind.JsonDeserializer;
7 import com.fasterxml.jackson.databind.JsonNode;
8 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
9
10 import org.whispersystems.signalservice.api.push.ServiceId;
11
12 import java.io.IOException;
13 import java.util.ArrayList;
14 import java.util.List;
15
16 public class LegacyRecipientStore {
17
18 @JsonProperty("recipientStore")
19 @JsonDeserialize(using = RecipientStoreDeserializer.class)
20 private final List<RecipientAddress> addresses = new ArrayList<>();
21
22 public List<RecipientAddress> getAddresses() {
23 return addresses;
24 }
25
26 public static class RecipientStoreDeserializer extends JsonDeserializer<List<RecipientAddress>> {
27
28 @Override
29 public List<RecipientAddress> deserialize(
30 JsonParser jsonParser, DeserializationContext deserializationContext
31 ) throws IOException {
32 JsonNode node = jsonParser.getCodec().readTree(jsonParser);
33
34 var addresses = new ArrayList<RecipientAddress>();
35
36 if (node.isArray()) {
37 for (var recipient : node) {
38 var recipientName = recipient.get("name").asText();
39 var serviceId = ServiceId.ACI.parseOrThrow(recipient.get("uuid").asText());
40 addresses.add(new RecipientAddress(serviceId, recipientName));
41 }
42 }
43
44 return addresses;
45 }
46 }
47 }