]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/SignalAccountFiles.java
Load multiple accounts in parallel
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / SignalAccountFiles.java
index 379aa1cb5ef79f5ff5e030e142f7fa14024a1515..b3ed439d44b9226b50f9dae3aafc78d99876b872 100644 (file)
@@ -47,11 +47,11 @@ public class SignalAccountFiles {
     }
 
     public MultiAccountManager initMultiAccountManager() {
-        final var managers = getAllLocalAccountNumbers().stream().map(a -> {
+        final var managers = accountsStore.getAllAccounts().parallelStream().map(a -> {
             try {
-                return initManager(a);
+                return initManager(a.path());
             } catch (NotRegisteredException | IOException | AccountCheckException e) {
-                logger.warn("Ignoring {}: {} ({})", a, e.getMessage(), e.getClass().getSimpleName());
+                logger.warn("Ignoring {}: {} ({})", a.number(), e.getMessage(), e.getClass().getSimpleName());
                 return null;
             }
         }).filter(Objects::nonNull).toList();
@@ -61,7 +61,16 @@ public class SignalAccountFiles {
 
     public Manager initManager(String number) throws IOException, NotRegisteredException, AccountCheckException {
         final var accountPath = accountsStore.getPathByNumber(number);
-        if (accountPath == null || !SignalAccount.accountFileExists(pathConfig.dataPath(), accountPath)) {
+        return this.initManager(number, accountPath);
+    }
+
+    private Manager initManager(
+            String number, String accountPath
+    ) throws IOException, NotRegisteredException, AccountCheckException {
+        if (accountPath == null) {
+            throw new NotRegisteredException();
+        }
+        if (!SignalAccount.accountFileExists(pathConfig.dataPath(), accountPath)) {
             throw new NotRegisteredException();
         }