X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/5cd5697aea9c2a032abc9ffc3a935e356ce65583..eac2a47163a07c2553fee8a0cfcdf3f1e6adafd2:/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 c645b512..f24fdbba 100644 --- a/src/main/java/org/asamk/signal/json/JsonDataMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonDataMessage.java @@ -2,11 +2,10 @@ package org.asamk.signal.json; import com.fasterxml.jackson.annotation.JsonInclude; -import org.asamk.Signal; +import org.asamk.signal.manager.Manager; import org.asamk.signal.manager.api.MessageEnvelope; import java.util.List; -import java.util.stream.Collectors; record JsonDataMessage( long timestamp, @@ -17,40 +16,54 @@ record JsonDataMessage( @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 previews, @JsonInclude(JsonInclude.Include.NON_NULL) List attachments, @JsonInclude(JsonInclude.Include.NON_NULL) JsonSticker sticker, @JsonInclude(JsonInclude.Include.NON_NULL) JsonRemoteDelete remoteDelete, @JsonInclude(JsonInclude.Include.NON_NULL) List contacts, - @JsonInclude(JsonInclude.Include.NON_NULL) JsonGroupInfo groupInfo + @JsonInclude(JsonInclude.Include.NON_NULL) List textStyles, + @JsonInclude(JsonInclude.Include.NON_NULL) JsonGroupInfo groupInfo, + @JsonInclude(JsonInclude.Include.NON_NULL) JsonStoryContext storyContext ) { - static JsonDataMessage from(MessageEnvelope.Data dataMessage) { + static JsonDataMessage from(MessageEnvelope.Data dataMessage, Manager m) { final var timestamp = dataMessage.timestamp(); final var groupInfo = dataMessage.groupContext().isPresent() ? JsonGroupInfo.from(dataMessage.groupContext() - .get()) : null; + .get(), m) : null; + final var storyContext = dataMessage.storyContext().isPresent() + ? JsonStoryContext.from(dataMessage.storyContext().get()) + : null; final var message = dataMessage.body().orElse(null); final var expiresInSeconds = dataMessage.expiresInSeconds(); final var viewOnce = dataMessage.isViewOnce(); 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() + final var mentions = !dataMessage.mentions().isEmpty() ? dataMessage.mentions() .stream() .map(JsonMention::from) - .collect(Collectors.toList()) : null; + .toList() : null; + final var previews = !dataMessage.previews().isEmpty() ? dataMessage.previews() + .stream() + .map(JsonPreview::from) + .toList() : null; final var remoteDelete = dataMessage.remoteDeleteId().isPresent() ? new JsonRemoteDelete(dataMessage.remoteDeleteId().get()) : null; - final var attachments = dataMessage.attachments().size() > 0 ? dataMessage.attachments() + final var attachments = !dataMessage.attachments().isEmpty() ? dataMessage.attachments() .stream() .map(JsonAttachment::from) - .collect(Collectors.toList()) : null; + .toList() : null; final var sticker = dataMessage.sticker().isPresent() ? JsonSticker.from(dataMessage.sticker().get()) : null; - - final var contacts = dataMessage.sharedContacts().size() > 0 ? dataMessage.sharedContacts() + final var contacts = !dataMessage.sharedContacts().isEmpty() ? dataMessage.sharedContacts() .stream() .map(JsonSharedContact::from) - .collect(Collectors.toList()) : null; + .toList() : null; + final var textStyles = !dataMessage.textStyles().isEmpty() ? dataMessage.textStyles() + .stream() + .map(JsonTextStyle::from) + .toList() : null; + return new JsonDataMessage(timestamp, message, expiresInSeconds, @@ -59,44 +72,13 @@ record JsonDataMessage( quote, payment, mentions, + previews, attachments, sticker, remoteDelete, 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, - 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, - null, - messageReceived.getAttachments().stream().map(JsonAttachment::from).collect(Collectors.toList()), - null, - null, - null, - messageReceived.getGroupId().length > 0 ? JsonGroupInfo.from(messageReceived.getGroupId()) : null); + textStyles, + groupInfo, + storyContext); } }