X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/805f976d9e3de22e4842df1622941584c7f7c041..1bf703b012521ac8b887be8a50b01bc7b62ce677:/src/main/java/org/asamk/signal/dbus/DbusMultiAccountManagerImpl.java diff --git a/src/main/java/org/asamk/signal/dbus/DbusMultiAccountManagerImpl.java b/src/main/java/org/asamk/signal/dbus/DbusMultiAccountManagerImpl.java index 9659fea5..27e28779 100644 --- a/src/main/java/org/asamk/signal/dbus/DbusMultiAccountManagerImpl.java +++ b/src/main/java/org/asamk/signal/dbus/DbusMultiAccountManagerImpl.java @@ -2,7 +2,6 @@ package org.asamk.signal.dbus; import org.asamk.Signal; import org.asamk.SignalControl; -import org.asamk.signal.DbusConfig; import org.asamk.signal.manager.Manager; import org.asamk.signal.manager.MultiAccountManager; import org.asamk.signal.manager.ProvisioningManager; @@ -32,10 +31,14 @@ public class DbusMultiAccountManagerImpl implements MultiAccountManager { // TODO add listeners for added/removed accounts private final Set> onManagerAddedHandlers = new HashSet<>(); private final Set> onManagerRemovedHandlers = new HashSet<>(); + private final String busname; - public DbusMultiAccountManagerImpl(final SignalControl signalControl, DBusConnection connection) { + public DbusMultiAccountManagerImpl( + final SignalControl signalControl, DBusConnection connection, final String busname + ) { this.signalControl = signalControl; this.connection = connection; + this.busname = busname; } @Override @@ -46,6 +49,14 @@ public class DbusMultiAccountManagerImpl implements MultiAccountManager { .toList(); } + @Override + public List getManagers() { + return signalControl.listAccounts() + .stream() + .map(a -> (Manager) new DbusManagerImpl(getRemoteObject(a, Signal.class), connection, busname)) + .toList(); + } + @Override public void addOnManagerAddedHandler(final Consumer handler) { synchronized (onManagerAddedHandlers) { @@ -62,7 +73,9 @@ public class DbusMultiAccountManagerImpl implements MultiAccountManager { @Override public Manager getManager(final String phoneNumber) { - return new DbusManagerImpl(getRemoteObject(signalControl.getAccount(phoneNumber), Signal.class), connection); + return new DbusManagerImpl(getRemoteObject(signalControl.getAccount(phoneNumber), Signal.class), + connection, + busname); } @Override @@ -90,7 +103,7 @@ public class DbusMultiAccountManagerImpl implements MultiAccountManager { private T getRemoteObject(final DBusPath path, final Class type) { try { - return connection.getRemoteObject(DbusConfig.getBusname(), path.getPath(), type); + return connection.getRemoteObject(busname, path.getPath(), type); } catch (DBusException e) { throw new AssertionError(e); }