package org.asamk.signal;
import org.asamk.signal.manager.Manager;
+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.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;
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(),
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.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());
}
final PlainTextWriter writer, final SignalServiceDataMessage.Quote quote
) {
writer.println("Id: {}", quote.getId());
- writer.println("Author: {}", m.resolveSignalServiceAddress(quote.getAuthor()).getLegacyIdentifier());
+ writer.println("Author: {}", formatContact(quote.getAuthor()));
writer.println("Text: {}", quote.getText());
if (quote.getMentions() != null && quote.getMentions().size() > 0) {
writer.println("Mentions:");
}
private String formatContact(SignalServiceAddress address) {
- final var number = address.getLegacyIdentifier();
- String name = null;
- try {
- name = m.getContactOrProfileName(number);
- } catch (InvalidNumberException ignored) {
- }
+ address = m.resolveSignalServiceAddress(address);
+ final var number = getLegacyIdentifier(address);
+ final var name = m.getContactOrProfileName(RecipientIdentifier.Single.fromAddress(address));
if (name == null || name.isEmpty()) {
return number;
} else {