X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ce70a623c21a267679d59838d041f9bc1d486cd9..ce7aa580b6f0580cdcf7fd68fcc8efba737d21ed:/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..f52be3eb 100644 --- a/src/main/java/org/asamk/signal/json/JsonSharedContact.java +++ b/src/main/java/org/asamk/signal/json/JsonSharedContact.java @@ -1,62 +1,45 @@ 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 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, + 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(SharedContact contact) { + final var name = JsonContactName.from(contact.getName()); + final var avatar = contact.getAvatar().isPresent() ? JsonContactAvatar.from(contact.getAvatar().get()) : null; + + final var phone = contact.getPhone().isPresent() ? contact.getPhone() + .get() + .stream() + .map(JsonContactPhone::from) + .collect(Collectors.toList()) : null; + + final var email = contact.getEmail().isPresent() ? contact.getEmail() + .get() + .stream() + .map(JsonContactEmail::from) + .collect(Collectors.toList()) : null; + + final var address = contact.getAddress().isPresent() ? contact.getAddress() + .get() + .stream() + .map(JsonContactAddress::from) + .collect(Collectors.toList()) : null; + + final var organization = contact.getOrganization().orNull(); + + return new JsonSharedContact(name, avatar, phone, email, address, organization); } }