Browse Source

extract vault directory selection into new method chooseValidVaultDirectory using Optional

Jan-Peter Klein 3 tuần trước cách đây
mục cha
commit
d1ce0362b4

+ 23 - 14
src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java

@@ -226,25 +226,14 @@ public class VaultListController implements FxController {
 		VaultListManager.redetermineVaultState(newValue);
 	}
 
-	@FXML
-	public void didClickAddNewVault() {
-		addVaultWizard.build().showAddNewVaultWizard(resourceBundle);
-	}
-
-	@FXML
-	public void didClickAddExistingVault() {
-		addVaultWizard.build().showAddExistingVaultWizard(resourceBundle);
-	}
-
-	@FXML
-	public void didClickRecoverExistingVault() {
+	private Optional<File> chooseValidVaultDirectory() {
 		DirectoryChooser directoryChooser = new DirectoryChooser();
 		File selectedDirectory;
 
 		do {
 			selectedDirectory = directoryChooser.showDialog(mainWindow);
 			if (selectedDirectory == null) {
-				return;
+				return Optional.empty();
 			}
 
 			Path selectedPath = selectedDirectory.toPath();
@@ -254,7 +243,27 @@ public class VaultListController implements FxController {
 			}
 		} while (selectedDirectory == null);
 
-		Vault preparedVault = VaultPreparator.prepareVault(selectedDirectory, vaultComponentFactory, mountServices);
+		return Optional.of(selectedDirectory);
+	}
+
+	@FXML
+	public void didClickAddNewVault() {
+		addVaultWizard.build().showAddNewVaultWizard(resourceBundle);
+	}
+
+	@FXML
+	public void didClickAddExistingVault() {
+		addVaultWizard.build().showAddExistingVaultWizard(resourceBundle);
+	}
+
+	@FXML
+	public void didClickRecoverExistingVault() {
+		Optional<File> selectedDirectory = chooseValidVaultDirectory();
+		if (selectedDirectory.isEmpty()) {
+			return;
+		}
+
+		Vault preparedVault = VaultPreparator.prepareVault(selectedDirectory.get(), vaultComponentFactory, mountServices);
 
 		Optional<Vault> matchingVaultListEntry = vaultListManager.get(preparedVault.getPath());
 		if (matchingVaultListEntry.isPresent()) {