diff --git a/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs b/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs index beb0718..03996c6 100644 --- a/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs +++ b/src/KeyKeeper/PasswordStore/IPassStoreDirectory.cs @@ -7,4 +7,5 @@ public interface IPassStoreDirectory : IEnumerable { bool DeleteEntry(Guid id); void AddEntry(PassStoreEntry entry); + void UpdateEntry(Guid id, PassStoreEntry entry); } diff --git a/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs b/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs index 4bed5da..53ebd77 100644 --- a/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs +++ b/src/KeyKeeper/PasswordStore/PassStoreEntryGroup.cs @@ -85,6 +85,21 @@ public class PassStoreEntryGroup : PassStoreEntry, IPassStoreDirectory return false; } + public void UpdateEntry(Guid id, PassStoreEntry entry) + { + entry.Parent = this; + if (ChildEntries == null) + return; + for (int i = 0; i < ChildEntries.Count; i++) + { + if (ChildEntries[i].Id == id) + { + ChildEntries[i] = entry; + return; + } + } + } + IEnumerator IEnumerable.GetEnumerator() { return ChildEntries.GetEnumerator(); diff --git a/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs b/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs index 101994c..444cdac 100644 --- a/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs +++ b/src/KeyKeeper/ViewModels/UnlockedRepositoryViewModel.cs @@ -77,8 +77,7 @@ public class UnlockedRepositoryViewModel : ViewModelBase public void UpdateEntry(PassStoreEntryPassword updatedEntry) { - currentDirectory.DeleteEntry(updatedEntry.Id); - currentDirectory.AddEntry(updatedEntry); + currentDirectory.UpdateEntry(updatedEntry.Id, updatedEntry); HasUnsavedChanges = true; OnPropertyChanged(nameof(Passwords)); }