X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/48b2c7ff8ad7b653c3a0cb42775a5850f593d0a0..e83bfb9e037d5a55d24b6f6f83efe27edb8dd27e:/src/main/java/org/asamk/signal/ReceiveMessageHandler.java diff --git a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java index 323b6edf..4a516197 100644 --- a/src/main/java/org/asamk/signal/ReceiveMessageHandler.java +++ b/src/main/java/org/asamk/signal/ReceiveMessageHandler.java @@ -1,11 +1,12 @@ package org.asamk.signal; import org.asamk.signal.manager.Manager; +import org.asamk.signal.manager.UntrustedIdentityException; +import org.asamk.signal.manager.api.RecipientIdentifier; import org.asamk.signal.manager.groups.GroupId; import org.asamk.signal.manager.groups.GroupUtils; import org.asamk.signal.util.DateUtils; import org.asamk.signal.util.Util; -import org.signal.libsignal.metadata.ProtocolUntrustedIdentityException; import org.slf4j.helpers.MessageFormatter; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceContent; @@ -18,7 +19,6 @@ import org.whispersystems.signalservice.api.messages.calls.SignalServiceCallMess import org.whispersystems.signalservice.api.messages.multidevice.SignalServiceSyncMessage; import org.whispersystems.signalservice.api.messages.shared.SharedContact; import org.whispersystems.signalservice.api.push.SignalServiceAddress; -import org.whispersystems.signalservice.api.util.InvalidNumberException; import java.util.ArrayList; import java.util.Base64; @@ -38,12 +38,9 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { @Override public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) { - if (envelope.hasSource()) { + if (envelope.hasSourceUuid()) { var source = envelope.getSourceAddress(); writer.println("Envelope from: {} (device: {})", formatContact(source), envelope.getSourceDevice()); - if (source.getRelay().isPresent()) { - writer.println("Relayed by: {}", source.getRelay().get()); - } } else { writer.println("Envelope from: unknown source"); } @@ -56,8 +53,8 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { writer.println("Got receipt."); } else if (envelope.isSignalMessage() || envelope.isPreKeySignalMessage() || envelope.isUnidentifiedSender()) { if (exception != null) { - if (exception instanceof ProtocolUntrustedIdentityException) { - var e = (ProtocolUntrustedIdentityException) exception; + if (exception instanceof UntrustedIdentityException) { + var e = (UntrustedIdentityException) exception; writer.println( "The user’s key is untrusted, either the user has reinstalled Signal or a third party sent this message."); final var recipientName = getLegacyIdentifier(m.resolveSignalServiceAddress(e.getSender())); @@ -238,6 +235,13 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { final var deviceId = callMessage.getDestinationDeviceId().get(); writer.println("Destination device id: {}", deviceId); } + if (callMessage.getGroupId().isPresent()) { + final var groupId = GroupId.unknownVersion(callMessage.getGroupId().get()); + writer.println("Destination group id: {}", groupId); + } + if (callMessage.getTimestamp().isPresent()) { + writer.println("Timestamp: {}", DateUtils.formatTimestamp(callMessage.getTimestamp().get())); + } if (callMessage.getAnswerMessage().isPresent()) { var answerMessage = callMessage.getAnswerMessage().get(); writer.println("Answer message: {}, sdp: {})", answerMessage.getId(), answerMessage.getSdp()); @@ -263,7 +267,9 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { } if (callMessage.getOpaqueMessage().isPresent()) { final var opaqueMessage = callMessage.getOpaqueMessage().get(); - writer.println("Opaque message: size {}", opaqueMessage.getOpaque().length); + writer.println("Opaque message: size {}, urgency: {}", + opaqueMessage.getOpaque().length, + opaqueMessage.getUrgency().name()); } } @@ -450,7 +456,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { final PlainTextWriter writer, final SignalServiceDataMessage.Reaction reaction ) { writer.println("Emoji: {}", reaction.getEmoji()); - writer.println("Target author: {}", formatContact(m.resolveSignalServiceAddress(reaction.getTargetAuthor()))); + writer.println("Target author: {}", formatContact(reaction.getTargetAuthor())); writer.println("Target timestamp: {}", DateUtils.formatTimestamp(reaction.getTargetSentTimestamp())); writer.println("Is remove: {}", reaction.isRemove()); } @@ -459,7 +465,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { final PlainTextWriter writer, final SignalServiceDataMessage.Quote quote ) { writer.println("Id: {}", quote.getId()); - writer.println("Author: {}", getLegacyIdentifier(m.resolveSignalServiceAddress(quote.getAuthor()))); + writer.println("Author: {}", formatContact(quote.getAuthor())); writer.println("Text: {}", quote.getText()); if (quote.getMentions() != null && quote.getMentions().size() > 0) { writer.println("Mentions:"); @@ -630,7 +636,7 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { private void printMention( PlainTextWriter writer, SignalServiceDataMessage.Mention mention ) { - final var address = m.resolveSignalServiceAddress(new SignalServiceAddress(mention.getUuid(), null)); + final var address = m.resolveSignalServiceAddress(mention.getUuid()); writer.println("- {}: {} (length: {})", formatContact(address), mention.getStart(), mention.getLength()); } @@ -678,12 +684,9 @@ public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler { } private String formatContact(SignalServiceAddress address) { + address = m.resolveSignalServiceAddress(address); final var number = getLegacyIdentifier(address); - String name = null; - try { - name = m.getContactOrProfileName(number); - } catch (InvalidNumberException ignored) { - } + final var name = m.getContactOrProfileName(RecipientIdentifier.Single.fromAddress(address)); if (name == null || name.isEmpty()) { return number; } else {