X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/6c33a89f82ffac98454c6f854e1c8877e3941f6a..83c75acd0a52518fba5db1b4735f2dba8b5e746e:/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 ea15b574..e71feda6 100644 --- a/src/main/java/org/asamk/signal/json/JsonSharedContact.java +++ b/src/main/java/org/asamk/signal/json/JsonSharedContact.java @@ -1,62 +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 { - - @JsonProperty - final JsonContactName name; - - @JsonProperty - final JsonContactAvatar avatar; - - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List phone; - - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List email; - - @JsonProperty - @JsonInclude(JsonInclude.Include.NON_NULL) - final List address; - - @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(); + +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 +) { + + 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; + + final var phone = contact.phone().size() > 0 + ? contact.phone().stream().map(JsonContactPhone::from).toList() + : null; + + final var email = contact.email().size() > 0 + ? contact.email().stream().map(JsonContactEmail::from).toList() + : null; + + final var address = contact.address().size() > 0 ? contact.address() + .stream() + .map(JsonContactAddress::from) + .toList() : null; + + final var organization = contact.organization().orElse(null); + + return new JsonSharedContact(name, avatar, phone, email, address, organization); } }