X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/c73c58723cc001327ed3f28cb8b98578a5437b93..5cccf521032954d7ad8e3f70e3cbef2ce1293e85:/lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java diff --git a/lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java b/lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java index 8fd1d5aa..4c67fd12 100644 --- a/lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java +++ b/lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java @@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import java.net.URI; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -15,9 +16,8 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.TimeoutException; import java.util.function.Consumer; -import java.util.stream.Collectors; -public class MultiAccountManagerImpl implements MultiAccountManager { +class MultiAccountManagerImpl implements MultiAccountManager { private final static Logger logger = LoggerFactory.getLogger(MultiAccountManagerImpl.class); @@ -25,19 +25,19 @@ public class MultiAccountManagerImpl implements MultiAccountManager { private final Set> onManagerRemovedHandlers = new HashSet<>(); private final Set managers = new HashSet<>(); private final Map provisioningManagers = new HashMap<>(); - private final File dataPath; + private final File settingsPath; private final ServiceEnvironment serviceEnvironment; private final String userAgent; public MultiAccountManagerImpl( final Collection managers, - final File dataPath, + final File settingsPath, final ServiceEnvironment serviceEnvironment, final String userAgent ) { this.managers.addAll(managers); managers.forEach(m -> m.addClosedListener(() -> this.removeManager(m))); - this.dataPath = dataPath; + this.settingsPath = settingsPath; this.serviceEnvironment = serviceEnvironment; this.userAgent = userAgent; } @@ -45,7 +45,14 @@ public class MultiAccountManagerImpl implements MultiAccountManager { @Override public List getAccountNumbers() { synchronized (managers) { - return managers.stream().map(Manager::getSelfNumber).collect(Collectors.toList()); + return managers.stream().map(Manager::getSelfNumber).toList(); + } + } + + @Override + public List getManagers() { + synchronized (managers) { + return new ArrayList<>(managers); } } @@ -111,20 +118,19 @@ public class MultiAccountManagerImpl implements MultiAccountManager { return provisioningManagers.remove(deviceLinkUri); } - @Override - public ProvisioningManager getNewProvisioningManager() { - return ProvisioningManager.init(dataPath, serviceEnvironment, userAgent, this::addManager); + private ProvisioningManager getNewProvisioningManager() { + return ProvisioningManager.init(settingsPath, serviceEnvironment, userAgent, this::addManager); } @Override public RegistrationManager getNewRegistrationManager(String account) throws IOException { - return RegistrationManager.init(account, dataPath, serviceEnvironment, userAgent, this::addManager); + return RegistrationManager.init(account, settingsPath, serviceEnvironment, userAgent, this::addManager); } @Override public void close() { synchronized (managers) { - for (var m : managers) { + for (var m : new ArrayList<>(managers)) { try { m.close(); } catch (IOException e) {