Browse Source

Merge branch 'hotfix/1.15.2'

Tobias Hagemann 2 months ago
parent
commit
b9df56a6de

+ 3 - 0
dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml

@@ -77,6 +77,9 @@
 	</content_rating>
 
 	<releases>
+		<release date="2025-04-04" version="1.15.2">
+			<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.2</url>
+		</release>
 		<release date="2025-02-05" version="1.15.1">
 			<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.1</url>
 		</release>

+ 13 - 2
pom.xml

@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.cryptomator</groupId>
 	<artifactId>cryptomator</artifactId>
-	<version>1.15.1</version>
+	<version>1.15.2</version>
 	<name>Cryptomator Desktop App</name>
 
 	<organization>
@@ -39,7 +39,7 @@
 		<cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version>
 		<cryptomator.integrations.linux.version>1.5.2</cryptomator.integrations.linux.version>
 		<cryptomator.fuse.version>5.0.2</cryptomator.fuse.version>
-		<cryptomator.webdav.version>2.0.7</cryptomator.webdav.version>
+		<cryptomator.webdav.version>2.0.10</cryptomator.webdav.version>
 
 		<!-- 3rd party dependencies -->
 		<commons-lang3.version>3.17.0</commons-lang3.version>
@@ -75,6 +75,17 @@
 		<surefire.jacoco.args></surefire.jacoco.args>
 	</properties>
 
+	<dependencyManagement>
+		<dependencies>
+			<!-- TODO: remove once fuse-nio-adapter is updated -->
+			<dependency>
+				<groupId>org.cryptomator</groupId>
+				<artifactId>jfuse</artifactId>
+				<version>0.7.2</version>
+			</dependency>
+		</dependencies>
+	</dependencyManagement>
+
 	<dependencies>
 		<!-- Cryptomator Libs -->
 		<dependency>

+ 8 - 5
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<ContentDisplay> 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<PassphraseEntryResult> result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain) {
+	public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture<PassphraseEntryResult> 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();
 	}