🐛 Fixes updating items

This commit is contained in:
2026-07-20 20:26:06 +02:00
parent c7aacb1df6
commit 22568554af
2 changed files with 21 additions and 27 deletions
+6 -2
View File
@@ -97,8 +97,12 @@ pub fn check_bw() -> Result<(), Error> {
pub fn get_items() -> Result<Vec<Item>, Error> { pub fn get_items() -> Result<Vec<Item>, Error> {
let items_raw = sh::sh(format!("{} list items --raw", EXECUTABLE)); let items_raw = sh::sh(format!("{} list items --raw", EXECUTABLE));
match serde_json::from_str(items_raw.as_str()) { match serde_json::from_str::<Vec<Item>>(items_raw.as_str()) {
Ok(val) => Ok(val), Ok(val) => Ok(val
.iter()
.filter(|x| x.type_ == 1)
.cloned()
.collect::<Vec<Item>>()),
Err(e) => Err(Error::new( Err(e) => Err(Error::new(
ErrorKind::Other, ErrorKind::Other,
format!("Couldn't get items: {e}"), format!("Couldn't get items: {e}"),
+15 -25
View File
@@ -59,11 +59,9 @@ fn sync() -> Result<(), Error> {
} }
}; };
println!("getting pass logins");
let pass_items = pass::get_items(&vault)?; let pass_items = pass::get_items(&vault)?;
let mut pass_logins = pass::get_logins(pass_items); let mut pass_logins = pass::get_logins(pass_items);
println!("getting bw logins");
let mut bw_items = bw::get_items()?; let mut bw_items = bw::get_items()?;
println!(); println!();
@@ -93,28 +91,25 @@ fn sync() -> Result<(), Error> {
} }
let pass_login = pass_login.unwrap(); let pass_login = pass_login.unwrap();
let bw_password = bw_login.password.clone(); let bw_password = bw_login.password.clone().unwrap_or("".to_string());
// TODO: fix this
if let None = bw_password {
continue;
}
let bw_password = bw_password.unwrap();
let pass_password = pass_login.password.clone(); let pass_password = pass_login.password.clone();
let bw_user = bw_login.username.clone(); let bw_user = bw_login.username.clone().unwrap_or("".to_string());
if let None = bw_user {
continue;
}
let bw_user = bw_user.unwrap();
let pass_user = match pass_login.username.is_empty() { let pass_user = match pass_login.username.is_empty() {
true => pass_login.email.clone(), true => pass_login.email.clone(),
false => pass_login.username.clone(), false => pass_login.username.clone(),
}; };
let pass_user_is_actually_email = pass_user == pass_login.email; let pass_user_is_actually_email = pass_user == pass_login.email;
if bw_user != pass_user || bw_password != pass_password { println!(
"{}: {} -> {} and {} -> {}",
bw_item.name,
pass_user,
bw_user,
bw_password.clone(),
pass_password
);
if bw_user != pass_user || (bw_password != pass_password && bw_password != "".to_string()) {
let consent = ask_consent( let consent = ask_consent(
format!("Attempting to update {}:", bw_item.name), format!("Attempting to update {}:", bw_item.name),
format!("{} -> {}", pass_user, bw_user.clone()), format!("{} -> {}", pass_user, bw_user.clone()),
@@ -136,12 +131,14 @@ fn sync() -> Result<(), Error> {
} }
let bw_index = bw_items.iter().position(|x| x.id == bw_item.id).unwrap(); let bw_index = bw_items.iter().position(|x| x.id == bw_item.id).unwrap();
println!("found bw index {}", bw_index);
bw_items.remove(bw_index); bw_items.remove(bw_index);
let pass_index = pass_logins let pass_index = pass_logins
.iter() .iter()
.position(|x| x.id == pass_login.id) .position(|x| x.id == pass_login.id)
.unwrap(); .unwrap();
println!("found pass index {}", pass_index);
pass_logins.remove(pass_index); pass_logins.remove(pass_index);
} }
@@ -153,19 +150,12 @@ fn sync() -> Result<(), Error> {
); );
for bw_item in bw_items { for bw_item in bw_items {
if let None = bw_item.login {
continue;
}
let login = bw_item.login.unwrap(); let login = bw_item.login.unwrap();
if let None = login.username {
continue;
}
let consent = ask_consent( let consent = ask_consent(
format!("Attempting to create {}:", bw_item.name), format!("Attempting to create {}:", bw_item.name),
format!("{}", login.username.clone().unwrap()), format!("{}", login.username.clone().unwrap_or("".to_string())),
format!("{:?}", login.password), format!("{}", login.password.clone().unwrap_or("".to_string())),
)?; )?;
if consent { if consent {
pass::create( pass::create(