]> nmode's Git Repositories - signal-cli/blobdiff - lib/src/main/java/org/asamk/signal/manager/MultiAccountManagerImpl.java
Implement startLink and finishLink for jsonrpc daemon
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / MultiAccountManagerImpl.java
index df74cf42418cf83078e96784a0899bcd10a63b0a..26f8b961b089b80c34e71179a1f9d8be37ccdd17 100644 (file)
@@ -6,10 +6,14 @@ import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URI;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.TimeoutException;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -20,6 +24,7 @@ public class MultiAccountManagerImpl implements MultiAccountManager {
     private final Set<Consumer<Manager>> onManagerAddedHandlers = new HashSet<>();
     private final Set<Consumer<Manager>> onManagerRemovedHandlers = new HashSet<>();
     private final Set<Manager> managers = new HashSet<>();
+    private final Map<URI, ProvisioningManager> provisioningManagers = new HashMap<>();
     private final File dataPath;
     private final ServiceEnvironment serviceEnvironment;
     private final String userAgent;
@@ -78,6 +83,19 @@ public class MultiAccountManagerImpl implements MultiAccountManager {
         }
     }
 
+    @Override
+    public URI getNewProvisioningDeviceLinkUri() throws TimeoutException, IOException {
+        final var provisioningManager = getNewProvisioningManager();
+        final var deviceLinkUri = provisioningManager.getDeviceLinkUri();
+        provisioningManagers.put(deviceLinkUri, provisioningManager);
+        return deviceLinkUri;
+    }
+
+    @Override
+    public ProvisioningManager getProvisioningManagerFor(final URI deviceLinkUri) {
+        return provisioningManagers.remove(deviceLinkUri);
+    }
+
     @Override
     public ProvisioningManager getNewProvisioningManager() {
         return ProvisioningManager.init(dataPath, serviceEnvironment, userAgent, this::addManager);