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 af10a72f4..5d25a8448 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorage.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorage.java @@ -1337,6 +1337,17 @@ public abstract class DataStorage { return children; } + public void migrate() { + var ordered = storeEntriesSet.stream().sorted(Comparator.comparingInt( + entry -> entry.getOrderIndex()).reversed() + .thenComparing(entry -> entry.getLastModified()).reversed()) + .toList(); + for (int i = 0; i < ordered.size(); i++) { + var entry = ordered.get(i); + entry.setOrderIndex(i + 1); + } + } + public List getCategoryParentHierarchy(DataStoreCategory cat) { var es = new ArrayList(); es.add(cat); 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 95587b6f1..e5703f2e6 100644 --- a/app/src/main/java/io/xpipe/app/storage/DataStorageMigration.java +++ b/app/src/main/java/io/xpipe/app/storage/DataStorageMigration.java @@ -4,7 +4,9 @@ import io.xpipe.app.core.AppCache; import io.xpipe.app.core.AppProperties; import io.xpipe.app.core.AppVersion; import io.xpipe.app.issue.ErrorEventFactory; +import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.secret.EncryptionToken; +import lombok.Data; import java.io.IOException; import java.nio.file.Files; @@ -76,6 +78,8 @@ public class DataStorageMigration { .handle(); } + DataStorage.get().migrate(); + EncryptionToken.invalidateTokens(); EncryptionToken.setMigratedVaultToken(true); @@ -84,9 +88,13 @@ public class DataStorageMigration { getStorage().forceRewrite(); getStorage().save(false); + AppPrefs.get().save(); + var versionFile = dir.resolve("vaultversion"); Files.writeString(versionFile, AppProperties.get().getCanonicalVersion().map(appVersion -> appVersion.toString()).orElse("23.9")); AppCache.update("vaultMigrated", true); + + DataStorage.get().pushManually(); } }