Skip to content

Commit 03d07da

Browse files
committed
Fix don't delete children on group edit
1 parent 6abba9b commit 03d07da

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

core/src/model/vault.rs

+17-13
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ impl Vault {
9191
let key_file = key_file.map(std::convert::Into::into);
9292
create_new_vault_dir(&path)?;
9393

94-
let master_key_dto = generate_master_key(password, key_file.as_ref().map(std::convert::AsRef::as_ref))?;
94+
let master_key_dto =
95+
generate_master_key(password, key_file.as_ref().map(std::convert::AsRef::as_ref))?;
9596

9697
let salt = generate_salt();
9798
let nonce = generate_chacha20_nonce()?;
@@ -304,18 +305,21 @@ impl Vault {
304305

305306
/// Insert a new [`Group`](Group) into this [`Vault`](Vault).
306307
pub fn insert_group(&mut self, group: Group) {
307-
// Insert into parent's children.
308-
let _ = group
309-
.parent()
310-
.as_ref()
311-
.and_then(|parent| self.children.get_mut(parent))
312-
.filter(|parent| !parent.groups().contains(group.uuid())) // TODO: find better way
313-
.map(|parent| parent.groups_mut().push(group.uuid().clone()));
314-
// Add own children.
315-
drop(
316-
self.children
317-
.insert(group.uuid().clone(), Children::default()),
318-
);
308+
if !self.groups().contains_key(group.uuid()) {
309+
// Insert into parent's children.
310+
let _ = group
311+
.parent()
312+
.as_ref()
313+
.and_then(|parent| self.children.get_mut(parent))
314+
.filter(|parent| !parent.groups().contains(group.uuid())) // TODO: find better way
315+
.map(|parent| parent.groups_mut().push(group.uuid().clone()));
316+
// Add own children.
317+
drop(
318+
self.children
319+
.insert(group.uuid().clone(), Children::default()),
320+
);
321+
}
322+
319323
drop(self.groups.insert(group.uuid().clone(), group));
320324
}
321325

0 commit comments

Comments
 (0)