diff --git a/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java b/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java index b07e3ffde..a45960a8b 100644 --- a/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java +++ b/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java @@ -21,32 +21,30 @@ public class UnlockInvalidMountPointController implements FxController { private final Stage window; private final Vault vault; - private final AtomicReference unlockException; private final FxApplicationWindows appWindows; private final ResourceBundle resourceBundle; + private final ExceptionType exceptionType; + private final String exceptionMessage; + public FormattedLabel dialogDescription; @Inject UnlockInvalidMountPointController(@UnlockWindow Stage window, @UnlockWindow Vault vault, @UnlockWindow AtomicReference unlockException, FxApplicationWindows appWindows, ResourceBundle resourceBundle) { this.window = window; this.vault = vault; - this.unlockException = unlockException; this.appWindows = appWindows; this.resourceBundle = resourceBundle; + + var exc = unlockException.get(); + this.exceptionType = getExceptionType(exc); + this.exceptionMessage = exc.getMessage(); } @FXML public void initialize() { - var e = unlockException.get(); - var translationKey = switch (e) { - case MountPointNotSupportedException x -> "unlock.error.customPath.description.notSupported"; - case MountPointNotExistsException x -> "unlock.error.customPath.description.notExists"; - case MountPointInUseException x -> "unlock.error.customPath.description.inUse"; - default -> "unlock.error.customPath.description.generic"; - }; - dialogDescription.setFormat(resourceBundle.getString(translationKey)); - dialogDescription.setArg1(e.getMessage()); + dialogDescription.setFormat(resourceBundle.getString(exceptionType.translationKey)); + dialogDescription.setArg1(exceptionMessage); } @FXML @@ -60,4 +58,26 @@ public class UnlockInvalidMountPointController implements FxController { window.close(); } + private ExceptionType getExceptionType(Throwable unlockException) { + return switch (unlockException) { + case MountPointNotSupportedException x -> ExceptionType.NOT_SUPPORTED; + case MountPointNotExistsException x -> ExceptionType.NOT_EXISTING; + case MountPointInUseException x -> ExceptionType.IN_USE; + default -> ExceptionType.GENERIC; + }; + } + + private enum ExceptionType { + + NOT_SUPPORTED("unlock.error.customPath.description.notSupported"), + NOT_EXISTING("unlock.error.customPath.description.notExists"), + IN_USE("unlock.error.customPath.description.inUse"), + GENERIC("unlock.error.customPath.description.generic"); + + private final String translationKey; + + ExceptionType(String translationKey) { + this.translationKey = translationKey; + } + } } \ No newline at end of file