X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/3de30e166f4eb6be0cd10548ed2c6cce2fe2282e..b09677a46c4ecf07f305892b51a927e4d7341793:/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 9b83ace5..b88aa81e 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusSignalImpl.java @@ -8,15 +8,16 @@ 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; +import org.asamk.signal.manager.groups.LastGroupAdminException; import org.asamk.signal.manager.groups.NotAGroupMemberException; import org.asamk.signal.manager.storage.identities.IdentityInfo; import org.asamk.signal.util.ErrorUtils; +import org.asamk.signal.util.Util; 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; -import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.util.InvalidNumberException; import java.io.File; @@ -24,15 +25,20 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.asamk.signal.util.Util.getLegacyIdentifier; + public class DbusSignalImpl implements Signal { private final Manager m; + private final String objectPath; - public DbusSignalImpl(final Manager m) { + public DbusSignalImpl(final Manager m, final String objectPath) { this.m = m; + this.objectPath = objectPath; } @Override @@ -42,7 +48,7 @@ public class DbusSignalImpl implements Signal { @Override public String getObjectPath() { - return null; + return objectPath; } @Override @@ -315,7 +321,7 @@ public class DbusSignalImpl implements Signal { return group.getMembers() .stream() .map(m::resolveSignalServiceAddress) - .map(SignalServiceAddress::getLegacyIdentifier) + .map(Util::getLegacyIdentifier) .collect(Collectors.toList()); } } @@ -347,8 +353,15 @@ public class DbusSignalImpl implements Signal { null, null, null, - avatar == null ? null : new File(avatar)); - checkSendMessageResults(results.first(), results.second()); + false, + null, + null, + null, + avatar == null ? null : new File(avatar), + null); + if (results != null) { + checkSendMessageResults(results.first(), results.second()); + } return groupId; } } catch (IOException e) { @@ -415,7 +428,7 @@ public class DbusSignalImpl implements Signal { var contacts = m.getContacts(); for (var c : contacts) { if (name.equals(c.second().getName())) { - numbers.add(m.resolveSignalServiceAddress(c.first()).getLegacyIdentifier()); + numbers.add(getLegacyIdentifier(m.resolveSignalServiceAddress(c.first()))); } } // Try profiles if no contact name was found @@ -437,11 +450,13 @@ public class DbusSignalImpl implements Signal { public void quitGroup(final byte[] groupId) { var group = GroupId.unknownVersion(groupId); try { - m.sendQuitGroupMessage(group); + m.sendQuitGroupMessage(group, Set.of()); } catch (GroupNotFoundException | NotAGroupMemberException e) { throw new Error.GroupNotFound(e.getMessage()); - } catch (IOException e) { + } catch (IOException | LastGroupAdminException e) { throw new Error.Failure(e.getMessage()); + } catch (InvalidNumberException e) { + throw new Error.InvalidNumber(e.getMessage()); } }