X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/591c0fe8a3744608575a6dcb1f6f4f9f818948d2..9bba7a85ab6fbe7cc8de6ece4b3850c883907e01:/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 7aa16ce4..787f47ab 100644 --- a/src/main/java/org/asamk/signal/json/JsonDataMessage.java +++ b/src/main/java/org/asamk/signal/json/JsonDataMessage.java @@ -1,11 +1,11 @@ package org.asamk.signal.json; import org.asamk.Signal; -import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; +import org.asamk.signal.manager.Manager; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServiceGroup; +import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -14,26 +14,55 @@ class JsonDataMessage { long timestamp; String message; int expiresInSeconds; + + JsonReaction reaction; + JsonQuote quote; + List mentions; List attachments; + JsonSticker sticker; JsonGroupInfo groupInfo; - JsonDataMessage(SignalServiceDataMessage dataMessage) { + JsonDataMessage(SignalServiceDataMessage dataMessage, Manager m) { this.timestamp = dataMessage.getTimestamp(); - if (dataMessage.getGroupContext().isPresent() && dataMessage.getGroupContext().get().getGroupV1().isPresent()) { - SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get(); - this.groupInfo = new JsonGroupInfo(groupInfo); + if (dataMessage.getGroupContext().isPresent()) { + if (dataMessage.getGroupContext().get().getGroupV1().isPresent()) { + SignalServiceGroup groupInfo = dataMessage.getGroupContext().get().getGroupV1().get(); + this.groupInfo = new JsonGroupInfo(groupInfo); + } else if (dataMessage.getGroupContext().get().getGroupV2().isPresent()) { + SignalServiceGroupV2 groupInfo = dataMessage.getGroupContext().get().getGroupV2().get(); + this.groupInfo = new JsonGroupInfo(groupInfo); + } } if (dataMessage.getBody().isPresent()) { this.message = dataMessage.getBody().get(); } this.expiresInSeconds = dataMessage.getExpiresInSeconds(); + if (dataMessage.getReaction().isPresent()) { + this.reaction = new JsonReaction(dataMessage.getReaction().get(), m); + } + if (dataMessage.getQuote().isPresent()) { + this.quote = new JsonQuote(dataMessage.getQuote().get(), m); + } + if (dataMessage.getMentions().isPresent()) { + this.mentions = dataMessage.getMentions() + .get() + .stream() + .map(mention -> new JsonMention(mention, m)) + .collect(Collectors.toList()); + } else { + this.mentions = List.of(); + } if (dataMessage.getAttachments().isPresent()) { - this.attachments = new ArrayList<>(dataMessage.getAttachments().get().size()); - for (SignalServiceAttachment attachment : dataMessage.getAttachments().get()) { - this.attachments.add(new JsonAttachment(attachment)); - } + this.attachments = dataMessage.getAttachments() + .get() + .stream() + .map(JsonAttachment::new) + .collect(Collectors.toList()); } else { - this.attachments = new ArrayList<>(); + this.attachments = List.of(); + } + if (dataMessage.getSticker().isPresent()) { + this.sticker = new JsonSticker(dataMessage.getSticker().get()); } } @@ -41,6 +70,10 @@ class JsonDataMessage { timestamp = messageReceived.getTimestamp(); message = messageReceived.getMessage(); groupInfo = new JsonGroupInfo(messageReceived.getGroupId()); + reaction = null; // TODO Replace these 4 with the proper commands + quote = null; + mentions = null; + sticker = null; attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList()); } @@ -48,6 +81,10 @@ class JsonDataMessage { timestamp = messageReceived.getTimestamp(); message = messageReceived.getMessage(); groupInfo = new JsonGroupInfo(messageReceived.getGroupId()); + reaction = null; // TODO Replace these 4 with the proper commands + quote = null; + mentions = null; + sticker = null; attachments = messageReceived.getAttachments().stream().map(JsonAttachment::new).collect(Collectors.toList()); } }