Armin Schrenk 2 years ago
parent
commit
71b876b32d
1 changed files with 7 additions and 3 deletions
  1. 7 3
      src/main/java/org/cryptomator/ui/fxapp/AutoUnlocker.java

+ 7 - 3
src/main/java/org/cryptomator/ui/fxapp/AutoUnlocker.java

@@ -4,6 +4,8 @@ import org.cryptomator.common.vaults.Vault;
 
 import javax.inject.Inject;
 import javafx.collections.ObservableList;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
 
 @FxApplicationScoped
 public class AutoUnlocker {
@@ -18,9 +20,11 @@ public class AutoUnlocker {
 	}
 
 	public void unlock() {
-		vaults.stream().filter(Vault::isLocked).filter(v -> v.getVaultSettings().unlockAfterStartup().get()).forEach(v -> {
-			appWindows.startUnlockWorkflow(v, null);
-		});
+		vaults.stream().filter(Vault::isLocked) //
+				.filter(v -> v.getVaultSettings().unlockAfterStartup().get()) //
+				.<CompletionStage<Void>>reduce(CompletableFuture.completedFuture(null), //
+						(unlockFlow, v) -> unlockFlow.handle((voit, ex) -> appWindows.startUnlockWorkflow(v, null)).thenCompose(stage -> stage), //we don't care here about the exception, logged elsewhere
+						(unlockChain1, unlockChain2) -> unlockChain1.handle((voit, ex) -> unlockChain2).thenCompose(stage -> stage));
 	}
 
 }