X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/8a0c6cae157bf92f752fe9b6cb76048dde989348..36475bb632316d0333f1c44f6639c4f63007bdce:/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java index f50363cb..879e6028 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -4,6 +4,7 @@ import org.asamk.Signal; import org.asamk.signal.BaseConfig; import org.asamk.signal.manager.AttachmentInvalidException; import org.asamk.signal.manager.Manager; +import org.asamk.signal.manager.NotMasterDeviceException; import org.asamk.signal.manager.groups.GroupId; import org.asamk.signal.manager.groups.GroupInviteLinkUrl; import org.asamk.signal.manager.groups.GroupNotFoundException; @@ -11,6 +12,7 @@ import org.asamk.signal.manager.groups.NotAGroupMemberException; import org.asamk.signal.manager.storage.identities.IdentityInfo; import org.asamk.signal.util.ErrorUtils; import org.freedesktop.dbus.exceptions.DBusExecutionException; +import org.whispersystems.libsignal.util.Pair; import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException; import org.whispersystems.signalservice.api.messages.SendMessageResult; @@ -248,7 +250,7 @@ public class DbusSignalImpl implements Signal { public String getContactName(final String number) { try { return m.getContactOrProfileName(number); - } catch (Exception e) { + } catch (InvalidNumberException e) { throw new Error.InvalidNumber(e.getMessage()); } } @@ -259,6 +261,8 @@ public class DbusSignalImpl implements Signal { m.setContactName(number, name); } catch (InvalidNumberException e) { throw new Error.InvalidNumber(e.getMessage()); + } catch (NotMasterDeviceException e) { + throw new Error.Failure("This command doesn't work on linked devices."); } } @@ -268,6 +272,8 @@ public class DbusSignalImpl implements Signal { m.setContactBlocked(number, blocked); } catch (InvalidNumberException e) { throw new Error.InvalidNumber(e.getMessage()); + } catch (NotMasterDeviceException e) { + throw new Error.Failure("This command doesn't work on linked devices."); } } @@ -383,11 +389,10 @@ public class DbusSignalImpl implements Signal { // all numbers the system knows @Override public List listNumbers() { - return Stream.concat(m.getIdentities() - .stream() - .map(IdentityInfo::getRecipientId) + return Stream.concat(m.getIdentities().stream().map(IdentityInfo::getRecipientId), + m.getContacts().stream().map(Pair::first)) .map(m::resolveSignalServiceAddress) - .map(a -> a.getNumber().orNull()), m.getContacts().stream().map(c -> c.number)) + .map(a -> a.getNumber().orNull()) .filter(Objects::nonNull) .distinct() .collect(Collectors.toList()); @@ -399,8 +404,8 @@ public class DbusSignalImpl implements Signal { var numbers = new ArrayList(); var contacts = m.getContacts(); for (var c : contacts) { - if (c.name != null && c.name.equals(name)) { - numbers.add(c.number); + if (name.equals(c.second().getName())) { + numbers.add(m.resolveSignalServiceAddress(c.first()).getLegacyIdentifier()); } } // Try profiles if no contact name was found @@ -449,13 +454,11 @@ public class DbusSignalImpl implements Signal { @Override public boolean isContactBlocked(final String number) { - var contacts = m.getContacts(); - for (var c : contacts) { - if (c.number.equals(number)) { - return c.blocked; - } + try { + return m.isContactBlocked(number); + } catch (InvalidNumberException e) { + throw new Error.InvalidNumber(e.getMessage()); } - return false; } @Override @@ -474,7 +477,7 @@ public class DbusSignalImpl implements Signal { if (group == null) { return false; } else { - return group.isMember(m.getSelfAddress()); + return group.isMember(m.getSelfRecipientId()); } } }