From: AsamK Date: Tue, 31 Dec 2019 12:02:49 +0000 (+0100) Subject: Display more information for received messages X-Git-Tag: v0.6.6~45 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/3b2682a57a07cf9a66809346f0e14031b758683d?ds=sidebyside Display more information for received messages --- diff --git a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java index 6f382b7a..657e6bf6 100644 --- a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java +++ b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java @@ -26,6 +26,7 @@ import org.whispersystems.signalservice.api.messages.multidevice.ReadMessage; import org.whispersystems.signalservice.api.messages.multidevice.SentTranscriptMessage; import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; import org.whispersystems.signalservice.api.messages.multidevice.VerifiedMessage; +import org.whispersystems.signalservice.api.messages.shared.SharedContact; import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.util.Base64; @@ -245,6 +246,33 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { printAttachment(groupInfo.getAvatar().get()); } } + if (message.getPreviews().isPresent()) { + final List previews = message.getPreviews().get(); + System.out.println("Previes:"); + for (SignalServiceDataMessage.Preview preview : previews) { + System.out.println(" - Title: " + preview.getTitle()); + System.out.println(" - Url: " + preview.getUrl()); + if (preview.getImage().isPresent()) { + printAttachment(preview.getImage().get()); + } + } + } + if (message.getSharedContacts().isPresent()) { + final List sharedContacts = message.getSharedContacts().get(); + System.out.println("Contacts:"); + for (SharedContact contact : sharedContacts) { + System.out.println(" - Name: " + contact.getName()); + // TODO show or store rest of the contact info + } + } + if (message.getSticker().isPresent()) { + final SignalServiceDataMessage.Sticker sticker = message.getSticker().get(); + System.out.println("Sticker:"); + System.out.println(" - Pack id: " + Base64.encodeBytes(sticker.getPackId())); + System.out.println(" - Pack key: " + Base64.encodeBytes(sticker.getPackKey())); + System.out.println(" - Sticker id: " + sticker.getStickerId()); + // TODO also download sticker image ?? + } if (message.isEndSession()) { System.out.println("Is end session"); } diff --git a/src/main/java/org/asamk/signal/manager/Manager.java b/src/main/java/org/asamk/signal/manager/Manager.java index 04bef98e..54d3f922 100644 --- a/src/main/java/org/asamk/signal/manager/Manager.java +++ b/src/main/java/org/asamk/signal/manager/Manager.java @@ -1049,6 +1049,19 @@ public class Manager implements Signal { } contact.profileKey = Base64.encodeBytes(message.getProfileKey().get()); } + if (message.getPreviews().isPresent()) { + final List previews = message.getPreviews().get(); + for (SignalServiceDataMessage.Preview preview : previews) { + if (preview.getImage().isPresent() && preview.getImage().get().isPointer()) { + SignalServiceAttachmentPointer attachment = preview.getImage().get().asPointer(); + try { + retrieveAttachment(attachment); + } catch (IOException | InvalidMessageException e) { + System.err.println("Failed to retrieve attachment (" + attachment.getId() + "): " + e.getMessage()); + } + } + } + } } private void retryFailedReceivedMessages(ReceiveMessageHandler handler, boolean ignoreAttachments) {