X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/237abe431bb77436ef7a23d32339804fff592cc7..b55d75ef992b8a58a1b87e2880dd0cf3451e1aaa:/src/main/java/org/asamk/signal/json/JsonSharedContact.java diff --git a/src/main/java/org/asamk/signal/json/JsonSharedContact.java b/src/main/java/org/asamk/signal/json/JsonSharedContact.java index b1b7718c..e71feda6 100644 --- a/src/main/java/org/asamk/signal/json/JsonSharedContact.java +++ b/src/main/java/org/asamk/signal/json/JsonSharedContact.java @@ -1,75 +1,39 @@ package org.asamk.signal.json; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import org.whispersystems.signalservice.api.messages.shared.SharedContact; +import org.asamk.signal.manager.api.MessageEnvelope; import java.util.List; -import java.util.stream.Collectors; -public class JsonSharedContact { +public record JsonSharedContact( + JsonContactName name, + @JsonInclude(JsonInclude.Include.NON_NULL) JsonContactAvatar avatar, + @JsonInclude(JsonInclude.Include.NON_NULL) List phone, + @JsonInclude(JsonInclude.Include.NON_NULL) List email, + @JsonInclude(JsonInclude.Include.NON_NULL) List address, + String organization +) { - @JsonProperty - final JsonContactName name; + static JsonSharedContact from(MessageEnvelope.Data.SharedContact contact) { + final var name = JsonContactName.from(contact.name()); + final var avatar = contact.avatar().isPresent() ? JsonContactAvatar.from(contact.avatar().get()) : null; - @JsonProperty - final JsonContactAvatar avatar; + final var phone = contact.phone().size() > 0 + ? contact.phone().stream().map(JsonContactPhone::from).toList() + : null; - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List phone; + final var email = contact.email().size() > 0 + ? contact.email().stream().map(JsonContactEmail::from).toList() + : null; - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List email; + final var address = contact.address().size() > 0 ? contact.address() + .stream() + .map(JsonContactAddress::from) + .toList() : null; - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List address; + final var organization = contact.organization().orElse(null); - @JsonProperty - final String organization; - - - public JsonSharedContact(SharedContact contact) { - name = new JsonContactName(contact.getName()); - if (contact.getAvatar().isPresent()) { - avatar = new JsonContactAvatar(contact.getAvatar().get()); - } else { - avatar = null; - } - - if (contact.getPhone().isPresent()) { - phone = contact.getPhone() - .get() - .stream() - .map(JsonContactPhone::new) - .collect(Collectors.toList()); - } else { - phone = null; - } - - if (contact.getEmail().isPresent()) { - email = contact.getEmail() - .get() - .stream() - .map(JsonContactEmail::new) - .collect(Collectors.toList()); - } else { - email = null; - } - - if (contact.getAddress().isPresent()) { - address = contact.getAddress() - .get() - .stream() - .map(JsonContactAddress::new) - .collect(Collectors.toList()); - } else { - address = null; - } - - organization = contact.getOrganization().orNull(); + return new JsonSharedContact(name, avatar, phone, email, address, organization); } }