- final var managers = new ArrayList<Manager>();
- try {
- for (String u : usernames) {
- try {
- managers.add(loadManager(u, dataPath, serviceEnvironment, trustNewIdentity));
- } catch (CommandException e) {
- logger.warn("Ignoring {}: {}", u, e.getMessage());
- }
- }
-
- command.handleCommand(ns, new SignalCreator() {
- private List<Consumer<Manager>> onManagerAddedHandlers = new ArrayList<>();
-
- @Override
- public List<String> getAccountNumbers() {
- synchronized (managers) {
- return managers.stream().map(Manager::getSelfNumber).collect(Collectors.toList());
- }
- }
-
- @Override
- public void addManager(final Manager m) {
- synchronized (managers) {
- if (!managers.contains(m)) {
- managers.add(m);
- for (final var handler : onManagerAddedHandlers) {
- handler.accept(m);
- }
- }
- }
- }
-
- @Override
- public void addOnManagerAddedHandler(final Consumer<Manager> handler) {
- onManagerAddedHandlers.add(handler);
- }
-
- @Override
- public Manager getManager(final String phoneNumber) {
- synchronized (managers) {
- return managers.stream()
- .filter(m -> m.getSelfNumber().equals(phoneNumber))
- .findFirst()
- .orElse(null);
- }
- }
+ try (var multiAccountManager = signalAccountFiles.initMultiAccountManager()) {
+ command.handleCommand(ns, multiAccountManager, outputWriter);
+ } catch (IOException e) {
+ throw new IOErrorException("Failed to load local accounts file", e);
+ }
+ }