]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/storage/recipients/LegacyRecipientStore.java
493171575ae4b0c39e8fb15f1cd795950804f88e
[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.SignalServiceAddress;
11 import org.whispersystems.signalservice.api.util.UuidUtil;
12
13 import java.io.IOException;
14 import java.util.ArrayList;
15 import java.util.List;
16
17 public class LegacyRecipientStore {
18
19 @JsonProperty("recipientStore")
20 @JsonDeserialize(using = RecipientStoreDeserializer.class)
21 private final List<SignalServiceAddress> addresses = new ArrayList<>();
22
23 public List<SignalServiceAddress> getAddresses() {
24 return addresses;
25 }
26
27 public static class RecipientStoreDeserializer extends JsonDeserializer<List<SignalServiceAddress>> {
28
29 @Override
30 public List<SignalServiceAddress> deserialize(
31 JsonParser jsonParser, DeserializationContext deserializationContext
32 ) throws IOException {
33 JsonNode node = jsonParser.getCodec().readTree(jsonParser);
34
35 var addresses = new ArrayList<SignalServiceAddress>();
36
37 if (node.isArray()) {
38 for (var recipient : node) {
39 var recipientName = recipient.get("name").asText();
40 var uuid = UuidUtil.parseOrThrow(recipient.get("uuid").asText());
41 final var serviceAddress = new SignalServiceAddress(uuid, recipientName);
42 addresses.add(serviceAddress);
43 }
44 }
45
46 return addresses;
47 }
48 }
49 }