From e922f7933fa0be5d1deab751c26b87bea4a6ed6f Mon Sep 17 00:00:00 2001 From: crschnick Date: Thu, 23 Jul 2026 06:47:25 +0000 Subject: [PATCH] Fixes --- .../main/java/io/xpipe/app/secret/EncryptedValue.java | 11 +++++++++++ .../main/java/io/xpipe/app/storage/DataStorage.java | 4 ++-- .../io/xpipe/app/storage/DataStorageMigration.java | 8 ++++++++ .../main/java/io/xpipe/app/util/AppJacksonModule.java | 9 ++++++--- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/secret/EncryptedValue.java b/app/src/main/java/io/xpipe/app/secret/EncryptedValue.java index 1fdfd8a07..1335e34be 100644 --- a/app/src/main/java/io/xpipe/app/secret/EncryptedValue.java +++ b/app/src/main/java/io/xpipe/app/secret/EncryptedValue.java @@ -39,6 +39,8 @@ public abstract class EncryptedValue { public abstract EncryptedValue withValue(T value); + public abstract EncryptedValue migrated(); + @Override public int hashCode() { return Objects.hashCode(value); @@ -94,6 +96,11 @@ public abstract class EncryptedValue { return of(value); } + + @Override + public EncryptedValue migrated() { + return of(getValue()); + } } @JsonTypeName("vault") @@ -105,6 +112,10 @@ public abstract class EncryptedValue { super(value, secret); } + @Override + public EncryptedValue migrated() { + return of(getValue()); + } @SneakyThrows public static VaultKey of(T value) { if (value == null) { diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorage.java b/app/src/main/java/io/xpipe/app/storage/DataStorage.java index 5d25a8448..901f41cb7 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorage.java @@ -1339,8 +1339,8 @@ public abstract class DataStorage { public void migrate() { var ordered = storeEntriesSet.stream().sorted(Comparator.comparingInt( - entry -> entry.getOrderIndex()).reversed() - .thenComparing(entry -> entry.getLastModified()).reversed()) + entry -> entry.getOrderIndex()) + .thenComparing(entry -> entry.getLastModified())) .toList(); for (int i = 0; i < ordered.size(); i++) { var entry = ordered.get(i); diff --git a/app/src/main/java/io/xpipe/app/storage/DataStorageMigration.java b/app/src/main/java/io/xpipe/app/storage/DataStorageMigration.java index e5703f2e6..3ee1b0dd9 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorageMigration.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorageMigration.java @@ -3,9 +3,13 @@ package io.xpipe.app.storage; import io.xpipe.app.core.AppCache; import io.xpipe.app.core.AppProperties; import io.xpipe.app.core.AppVersion; +import io.xpipe.app.hub.comp.StoreSectionSortMode; +import io.xpipe.app.hub.comp.StoreViewState; import io.xpipe.app.issue.ErrorEventFactory; +import io.xpipe.app.platform.PlatformThread; import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.secret.EncryptionToken; +import javafx.application.Platform; import lombok.Data; import java.io.IOException; @@ -96,5 +100,9 @@ public class DataStorageMigration { AppCache.update("vaultMigrated", true); DataStorage.get().pushManually(); + + Platform.runLater(() -> { + StoreViewState.get().getGlobalSortMode().setValue(StoreSectionSortMode.INDEX_DESC); + }); } } diff --git a/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java b/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java index ab7ce6310..68e4bac2a 100644 --- a/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java +++ b/app/src/main/java/io/xpipe/app/util/AppJacksonModule.java @@ -268,7 +268,7 @@ public class AppJacksonModule extends SimpleModule { var newEnc = Base64Helper.toBase64Url(oldRaw); var tree = JsonNodeFactory.instance.objectNode(); - tree.put("type", "inPlace"); + tree.put("type", "internal"); tree.put("encryptedValue", newEnc); jgen.writeTree(tree); } @@ -331,7 +331,7 @@ public class AppJacksonModule extends SimpleModule { return (T) PasswordLockSecretValue.builder().encryptedValue(encryptedValueNode.textValue()).build(); } - if ("inPlace".equals(type)) { + if ("internal".equals(type)) { var r = Base64Helper.fromBase64UrlString(encryptedValueNode.textValue()); var enc = SecretValue.toBase64e(r); return (T) InPlaceSecretValue.builder().encryptedValue(enc).build(); @@ -403,7 +403,10 @@ public class AppJacksonModule extends SimpleModule { return; } - jgen.writeTree(value.getSecret().serialize(value.allowUserSecretKey())); + var rewrite = value.getSecret().requiresRewrite(value.allowUserSecretKey()); + var secret = rewrite ? value.migrated().getSecret() : value.getSecret(); + + jgen.writeTree(secret.serialize(value.allowUserSecretKey())); } @Override