From 2b69dc3a84485090bfe9d54501f979520c5485f8 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Fri, 31 May 2024 16:24:18 +0200 Subject: [PATCH] Save the vault when saving group filter right after a vault version bump --- .../aegis/ui/MainActivity.java | 3 +++ .../beemdevelopment/aegis/vault/Vault.java | 20 +++++++++++++++++-- .../aegis/vault/VaultRepository.java | 4 ++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index 2fd33f3e..24bf91c5 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -1047,6 +1047,9 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene @Override public void onSaveGroupFilter(Set groupFilter) { + if (_vaultManager.getVault().isGroupsMigrationFresh()) { + saveAndBackupVault(); + } _prefs.setGroupFilter(groupFilter); } diff --git a/app/src/main/java/com/beemdevelopment/aegis/vault/Vault.java b/app/src/main/java/com/beemdevelopment/aegis/vault/Vault.java index de7e434d..ff90046d 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/vault/Vault.java +++ b/app/src/main/java/com/beemdevelopment/aegis/vault/Vault.java @@ -16,6 +16,9 @@ public class Vault { private final UUIDMap _entries = new UUIDMap<>(); private final UUIDMap _groups = new UUIDMap<>(); + // Whether we've migrated the group list to the new format while parsing the vault + private boolean _isGroupsMigrationFresh = false; + public JSONObject toJson() { return toJson(null); } @@ -70,7 +73,9 @@ public class Vault { JSONArray array = obj.getJSONArray("entries"); for (int i = 0; i < array.length(); i++) { VaultEntry entry = VaultEntry.fromJson(array.getJSONObject(i)); - vault.migrateOldGroup(entry); + if (vault.migrateOldGroup(entry)) { + vault.setGroupsMigrationFresh(); + } // check the vault has a group corresponding to each one the entry claims to be in for (UUID groupUuid: entry.getGroups()) { @@ -88,7 +93,15 @@ public class Vault { return vault; } - public void migrateOldGroup(VaultEntry entry) { + private void setGroupsMigrationFresh() { + _isGroupsMigrationFresh = true; + } + + public boolean isGroupsMigrationFresh() { + return _isGroupsMigrationFresh; + } + + public boolean migrateOldGroup(VaultEntry entry) { if (entry.getOldGroup() != null) { Optional optGroup = getGroups().getValues() .stream() @@ -104,7 +117,10 @@ public class Vault { } entry.setOldGroup(null); + return true; } + + return false; } public UUIDMap getEntries() { diff --git a/app/src/main/java/com/beemdevelopment/aegis/vault/VaultRepository.java b/app/src/main/java/com/beemdevelopment/aegis/vault/VaultRepository.java index 2d59d624..81e1e530 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/vault/VaultRepository.java +++ b/app/src/main/java/com/beemdevelopment/aegis/vault/VaultRepository.java @@ -314,6 +314,10 @@ public class VaultRepository { .collect(Collectors.toList()); } + public boolean isGroupsMigrationFresh() { + return _vault.isGroupsMigrationFresh(); + } + public VaultFileCredentials getCredentials() { return _creds == null ? null : _creds.clone(); }