import org.whispersystems.signalservice.api.push.SignalServiceAddress;
import org.whispersystems.signalservice.api.util.InvalidNumberException;
+import java.util.ArrayList;
import java.util.Base64;
import java.util.stream.Collectors;
+import static org.asamk.signal.util.Util.getLegacyIdentifier;
+
public class ReceiveMessageHandler implements Manager.ReceiveMessageHandler {
final Manager m;
+ final PlainTextWriter writer;
- public ReceiveMessageHandler(Manager m) {
+ public ReceiveMessageHandler(Manager m, final PlainTextWriter writer) {
this.m = m;
+ this.writer = writer;
}
@Override
public void handleMessage(SignalServiceEnvelope envelope, SignalServiceContent content, Throwable exception) {
- PlainTextWriter writer = new PlainTextWriterImpl(System.out);
-
if (envelope.hasSource()) {
var source = envelope.getSourceAddress();
writer.println("Envelope from: {} (device: {})", formatContact(source), envelope.getSourceDevice());
var e = (ProtocolUntrustedIdentityException) 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 = m.resolveSignalServiceAddress(e.getSender()).getLegacyIdentifier();
+ final var recipientName = getLegacyIdentifier(m.resolveSignalServiceAddress(e.getSender()));
writer.println(
"Use 'signal-cli -u {} listIdentities -n {}', verify the key and run 'signal-cli -u {} trust -v \"FINGER_PRINT\" {}' to mark it as trusted",
m.getUsername(),
DateUtils.formatTimestamp(rm.getTimestamp()));
}
}
+ if (syncMessage.getViewed().isPresent()) {
+ writer.println("Received sync viewed messages list");
+ for (var vm : syncMessage.getViewed().get()) {
+ writer.println("- From: {} Message timestamp: {}",
+ formatContact(vm.getSender()),
+ DateUtils.formatTimestamp(vm.getTimestamp()));
+ }
+ }
if (syncMessage.getRequest().isPresent()) {
String type;
if (syncMessage.getRequest().get().isContactsRequest()) {
writer.println("Blocked numbers:");
final var blockedList = syncMessage.getBlockedList().get();
for (var address : blockedList.getAddresses()) {
- writer.println("- {}", address.getLegacyIdentifier());
+ writer.println("- {}", getLegacyIdentifier(address));
}
}
if (syncMessage.getVerified().isPresent()) {
final PlainTextWriter writer, final SignalServiceDataMessage.Quote quote
) {
writer.println("Id: {}", quote.getId());
- writer.println("Author: {}", m.resolveSignalServiceAddress(quote.getAuthor()).getLegacyIdentifier());
+ writer.println("Author: {}", getLegacyIdentifier(m.resolveSignalServiceAddress(quote.getAuthor())));
writer.println("Text: {}", quote.getText());
if (quote.getMentions() != null && quote.getMentions().size() > 0) {
writer.println("Mentions:");
pointer.getPreview().isPresent() ? " (Preview is available: "
+ pointer.getPreview().get().length
+ " bytes)" : "");
- writer.println("Voice note: {}", pointer.getVoiceNote() ? "yes" : "no");
- writer.println("Borderless: {}", pointer.isBorderless() ? "yes" : "no");
+ final var flags = new ArrayList<String>();
+ if (pointer.getVoiceNote()) {
+ flags.add("voice note");
+ }
+ if (pointer.isBorderless()) {
+ flags.add("borderless");
+ }
+ if (pointer.isGif()) {
+ flags.add("video gif");
+ }
+ if (flags.size() > 0) {
+ writer.println("Flags: {}", String.join(", ", flags));
+ }
if (pointer.getWidth() > 0 || pointer.getHeight() > 0) {
writer.println("Dimensions: {}x{}", pointer.getWidth(), pointer.getHeight());
}
}
private String formatContact(SignalServiceAddress address) {
- final var number = address.getLegacyIdentifier();
+ final var number = getLegacyIdentifier(address);
String name = null;
try {
name = m.getContactOrProfileName(number);