|
@@ -111,6 +111,7 @@ impl IProfiles {
|
|
|
if item.uid.is_none() {
|
|
|
bail!("the uid should not be null");
|
|
|
}
|
|
|
+ let uid = item.uid.clone();
|
|
|
|
|
|
// save the file data
|
|
|
// move the field value after save
|
|
@@ -128,6 +129,12 @@ impl IProfiles {
|
|
|
.with_context(|| format!("failed to write to file \"{}\"", file))?;
|
|
|
}
|
|
|
|
|
|
+ if self.current.is_none()
|
|
|
+ && (item.itype == Some("remote".to_string()) || item.itype == Some("local".to_string()))
|
|
|
+ {
|
|
|
+ self.current = uid;
|
|
|
+ }
|
|
|
+
|
|
|
if self.items.is_none() {
|
|
|
self.items = Some(vec![]);
|
|
|
}
|
|
@@ -135,6 +142,7 @@ impl IProfiles {
|
|
|
if let Some(items) = self.items.as_mut() {
|
|
|
items.push(item)
|
|
|
}
|
|
|
+
|
|
|
self.save_file()
|
|
|
}
|
|
|
|
|
@@ -355,10 +363,15 @@ impl IProfiles {
|
|
|
}
|
|
|
// delete the original uid
|
|
|
if current == uid {
|
|
|
- self.current = match !items.is_empty() {
|
|
|
- true => items[0].uid.clone(),
|
|
|
- false => None,
|
|
|
- };
|
|
|
+ self.current = None;
|
|
|
+ for item in items.iter() {
|
|
|
+ if item.itype == Some("remote".to_string())
|
|
|
+ || item.itype == Some("local".to_string())
|
|
|
+ {
|
|
|
+ self.current = item.uid.clone();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
self.items = Some(items);
|