diff --git a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml index 450f6adb2..c3a1c64f4 100644 --- a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml +++ b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml @@ -77,6 +77,9 @@ + + https://github.com/cryptomator/cryptomator/releases/1.15.2 + https://github.com/cryptomator/cryptomator/releases/1.15.1 diff --git a/pom.xml b/pom.xml index c4ca3eed8..518b802e5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 org.cryptomator cryptomator - 1.15.1 + 1.15.2 Cryptomator Desktop App @@ -39,7 +39,7 @@ 1.2.4 1.5.2 5.0.2 - 2.0.7 + 2.0.10 3.17.0 @@ -75,6 +75,17 @@ + + + + + org.cryptomator + jfuse + 0.7.2 + + + + diff --git a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java index 6d52362b3..37b2f2e1f 100644 --- a/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java +++ b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java @@ -36,6 +36,7 @@ import javafx.stage.Stage; import javafx.stage.WindowEvent; import javafx.util.Duration; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; @PassphraseEntryScoped public class PassphraseEntryController implements FxController { @@ -49,6 +50,7 @@ public class PassphraseEntryController implements FxController { private final ForgetPasswordComponent.Builder forgetPassword; private final KeychainManager keychain; private final StringBinding vaultName; + private final ExecutorService backgroundExecutorService; private final BooleanProperty unlockInProgress = new SimpleBooleanProperty(); private final ObjectBinding unlockButtonContentDisplay = Bindings.when(unlockInProgress).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY); private final BooleanProperty unlockButtonDisabled = new SimpleBooleanProperty(); @@ -64,7 +66,7 @@ public class PassphraseEntryController implements FxController { public Animation unlockAnimation; @Inject - public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain) { + public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain, ExecutorService backgroundExecutorService) { this.window = window; this.vault = vault; this.result = result; @@ -72,8 +74,8 @@ public class PassphraseEntryController implements FxController { this.forgetPassword = forgetPassword; this.keychain = keychain; this.vaultName = WeakBindings.bindString(vault.displayNameProperty()); + this.backgroundExecutorService = backgroundExecutorService; window.setOnHiding(this::windowClosed); - result.whenCompleteAsync((r, t) -> unlockInProgress.set(false), Platform::runLater); } @FXML @@ -119,8 +121,6 @@ public class PassphraseEntryController implements FxController { new KeyFrame(Duration.millis(800), legsExtendedY, legsExtendedX, faceHidden), // new KeyFrame(Duration.millis(1000), faceVisible) // ); - - result.whenCompleteAsync((r, t) -> stopUnlockAnimation()); } @FXML @@ -133,6 +133,9 @@ public class PassphraseEntryController implements FxController { result.cancel(true); LOG.debug("Unlock canceled by user."); } + if( passwordField != null) { + passwordField.getCharacters().destroy(); + } } @@ -142,7 +145,7 @@ public class PassphraseEntryController implements FxController { unlockInProgress.set(true); CharSequence pwFieldContents = passwordField.getCharacters(); Passphrase pw = Passphrase.copyOf(pwFieldContents); - result.complete(new PassphraseEntryResult(pw, savePasswordCheckbox.isSelected())); + result.completeAsync(() -> new PassphraseEntryResult(pw, savePasswordCheckbox.isSelected()), backgroundExecutorService); startUnlockAnimation(); }