]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonSharedContact.java
Refactor receive api
[signal-cli] / src / main / java / org / asamk / signal / json / JsonSharedContact.java
index ea15b5748ff379e76faf801d661b03abc09bc88b..4c8e5eb565aa76db581e98d4c8bf2fa96555d73f 100644 (file)
@@ -1,62 +1,42 @@
 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<JsonContactPhone> phone;
-
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final List<JsonContactEmail> email;
-
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final List<JsonContactAddress> 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<JsonContactPhone> phone,
+        @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonContactEmail> email,
+        @JsonInclude(JsonInclude.Include.NON_NULL) List<JsonContactAddress> 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)
+                .collect(Collectors.toList()) : null;
+
+        final var email = contact.email().size() > 0 ? contact.email()
+                .stream()
+                .map(JsonContactEmail::from)
+                .collect(Collectors.toList()) : null;
+
+        final var address = contact.address().size() > 0 ? contact.address()
+                .stream()
+                .map(JsonContactAddress::from)
+                .collect(Collectors.toList()) : null;
+
+        final var organization = contact.organization().orElse(null);
+
+        return new JsonSharedContact(name, avatar, phone, email, address, organization);
     }
 }