X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/ce7aa580b6f0580cdcf7fd68fcc8efba737d21ed..8867a7b9eeb3353d059613544899b262f4f47579:/src/main/java/org/asamk/signal/json/JsonDataMessage.java diff --git a/src/main/java/org/asamk/signal/json/JsonDataMessage.java b/src/main/java/org/asamk/signal/json/JsonDataMessage.java index 1e898175..d89c7d05 100644 --- a/src/main/java/org/asamk/signal/json/JsonDataMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonDataMessage.java @@ -2,9 +2,7 @@ package org.asamk.signal.json; import com.fasterxml.jackson.annotation.JsonInclude; -import org.asamk.Signal; -import org.asamk.signal.manager.Manager; -import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; +import org.asamk.signal.manager.api.MessageEnvelope; import java.util.List; import java.util.stream.Collectors; @@ -16,6 +14,7 @@ record JsonDataMessage( @JsonInclude(JsonInclude.Include.NON_NULL) Boolean viewOnce, @JsonInclude(JsonInclude.Include.NON_NULL) JsonReaction reaction, @JsonInclude(JsonInclude.Include.NON_NULL) JsonQuote quote, + @JsonInclude(JsonInclude.Include.NON_NULL) JsonPayment payment, @JsonInclude(JsonInclude.Include.NON_NULL) List mentions, @JsonInclude(JsonInclude.Include.NON_NULL) List attachments, @JsonInclude(JsonInclude.Include.NON_NULL) JsonSticker sticker, @@ -24,72 +23,40 @@ record JsonDataMessage( @JsonInclude(JsonInclude.Include.NON_NULL) JsonGroupInfo groupInfo ) { - static JsonDataMessage from(SignalServiceDataMessage dataMessage, Manager m) { - final var timestamp = dataMessage.getTimestamp(); - final JsonGroupInfo groupInfo; - if (dataMessage.getGroupContext().isPresent()) { - final var groupContext = dataMessage.getGroupContext().get(); - if (groupContext.getGroupV1().isPresent()) { - var group = groupContext.getGroupV1().get(); - groupInfo = JsonGroupInfo.from(group); - } else if (groupContext.getGroupV2().isPresent()) { - var group = groupContext.getGroupV2().get(); - groupInfo = JsonGroupInfo.from(group); - } else { - groupInfo = null; - } - } else { - groupInfo = null; - } - final var message = dataMessage.getBody().orNull(); - final var expiresInSeconds = dataMessage.getExpiresInSeconds(); + static JsonDataMessage from(MessageEnvelope.Data dataMessage) { + final var timestamp = dataMessage.timestamp(); + final var groupInfo = dataMessage.groupContext().isPresent() ? JsonGroupInfo.from(dataMessage.groupContext() + .get()) : null; + final var message = dataMessage.body().orElse(null); + final var expiresInSeconds = dataMessage.expiresInSeconds(); final var viewOnce = dataMessage.isViewOnce(); - final var reaction = dataMessage.getReaction().isPresent() ? JsonReaction.from(dataMessage.getReaction().get(), - m) : null; - final var quote = dataMessage.getQuote().isPresent() ? JsonQuote.from(dataMessage.getQuote().get(), m) : null; - final List mentions; - if (dataMessage.getMentions().isPresent()) { - mentions = dataMessage.getMentions() - .get() - .stream() - .map(mention -> JsonMention.from(mention, m)) - .collect(Collectors.toList()); - } else { - mentions = List.of(); - } - final var remoteDelete = dataMessage.getRemoteDelete().isPresent() - ? JsonRemoteDelete.from(dataMessage.getRemoteDelete().get()) - : null; - final List attachments; - if (dataMessage.getAttachments().isPresent()) { - attachments = dataMessage.getAttachments() - .get() - .stream() - .map(JsonAttachment::from) - .collect(Collectors.toList()); - } else { - attachments = List.of(); - } - final var sticker = dataMessage.getSticker().isPresent() - ? JsonSticker.from(dataMessage.getSticker().get()) + final var reaction = dataMessage.reaction().map(JsonReaction::from).orElse(null); + final var quote = dataMessage.quote().isPresent() ? JsonQuote.from(dataMessage.quote().get()) : null; + final var payment = dataMessage.payment().isPresent() ? JsonPayment.from(dataMessage.payment().get()) : null; + final var mentions = dataMessage.mentions().size() > 0 ? dataMessage.mentions() + .stream() + .map(JsonMention::from) + .collect(Collectors.toList()) : null; + final var remoteDelete = dataMessage.remoteDeleteId().isPresent() + ? new JsonRemoteDelete(dataMessage.remoteDeleteId().get()) : null; + final var attachments = dataMessage.attachments().size() > 0 ? dataMessage.attachments() + .stream() + .map(JsonAttachment::from) + .collect(Collectors.toList()) : null; + final var sticker = dataMessage.sticker().isPresent() ? JsonSticker.from(dataMessage.sticker().get()) : null; - final List contacts; - if (dataMessage.getSharedContacts().isPresent()) { - contacts = dataMessage.getSharedContacts() - .get() - .stream() - .map(JsonSharedContact::from) - .collect(Collectors.toList()); - } else { - contacts = List.of(); - } + final var contacts = dataMessage.sharedContacts().size() > 0 ? dataMessage.sharedContacts() + .stream() + .map(JsonSharedContact::from) + .collect(Collectors.toList()) : null; return new JsonDataMessage(timestamp, message, expiresInSeconds, viewOnce, reaction, quote, + payment, mentions, attachments, sticker, @@ -97,36 +64,4 @@ record JsonDataMessage( contacts, groupInfo); } - - static JsonDataMessage from(Signal.MessageReceived messageReceived) { - return new JsonDataMessage(messageReceived.getTimestamp(), - messageReceived.getMessage(), - // TODO Replace these with the proper commands - null, - null, - null, - null, - null, - messageReceived.getAttachments().stream().map(JsonAttachment::from).collect(Collectors.toList()), - null, - null, - null, - messageReceived.getGroupId().length > 0 ? JsonGroupInfo.from(messageReceived.getGroupId()) : null); - } - - static JsonDataMessage from(Signal.SyncMessageReceived messageReceived) { - return new JsonDataMessage(messageReceived.getTimestamp(), - messageReceived.getMessage(), - // TODO Replace these with the proper commands - null, - null, - null, - null, - null, - messageReceived.getAttachments().stream().map(JsonAttachment::from).collect(Collectors.toList()), - null, - null, - null, - messageReceived.getGroupId().length > 0 ? JsonGroupInfo.from(messageReceived.getGroupId()) : null); - } }