]> nmode's Git Repositories - signal-cli/blobdiff - src/main/java/org/asamk/signal/json/JsonTypingMessage.java
Use record classes
[signal-cli] / src / main / java / org / asamk / signal / json / JsonTypingMessage.java
index 7e3b1a44a966cec122ece3ad7e387ae961e39331..b231d67e457b1d51b36955f7eed76e11c22522f8 100644 (file)
@@ -1,28 +1,26 @@
 package org.asamk.signal.json;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
 
 import org.whispersystems.signalservice.api.messages.SignalServiceTypingMessage;
 
 import java.util.Base64;
 
-class JsonTypingMessage {
+record JsonTypingMessage(
+        String action, long timestamp, @JsonInclude(JsonInclude.Include.NON_NULL) String groupId
+) {
 
-    @JsonProperty
-    final String action;
-
-    @JsonProperty
-    final long timestamp;
-
-    @JsonProperty
-    @JsonInclude(JsonInclude.Include.NON_NULL)
-    final String groupId;
+    JsonTypingMessage(final String action, final long timestamp, final String groupId) {
+        this.action = action;
+        this.timestamp = timestamp;
+        this.groupId = groupId;
+    }
 
-    JsonTypingMessage(SignalServiceTypingMessage typingMessage) {
-        this.action = typingMessage.getAction().name();
-        this.timestamp = typingMessage.getTimestamp();
+    static JsonTypingMessage from(SignalServiceTypingMessage typingMessage) {
+        final var action = typingMessage.getAction().name();
+        final var timestamp = typingMessage.getTimestamp();
         final var encoder = Base64.getEncoder();
-        this.groupId = typingMessage.getGroupId().transform(encoder::encodeToString).orNull();
+        final var groupId = typingMessage.getGroupId().transform(encoder::encodeToString).orNull();
+        return new JsonTypingMessage(action, timestamp, groupId);
     }
 }