diff --git a/src/main/java/org/cryptomator/ui/fxapp/AutoUnlocker.java b/src/main/java/org/cryptomator/ui/fxapp/AutoUnlocker.java index 9d6a73fa0..973d919fc 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/AutoUnlocker.java +++ b/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()) // + .>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)); } }