From 22568554af74f7658baa16062066b9c3704e31b6 Mon Sep 17 00:00:00 2001 From: Ash Svitan Date: Mon, 20 Jul 2026 20:26:06 +0200 Subject: [PATCH] :bug: Fixes updating items --- src/bw.rs | 8 ++++++-- src/main.rs | 40 +++++++++++++++------------------------- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/bw.rs b/src/bw.rs index 6d0e333..36a9d03 100644 --- a/src/bw.rs +++ b/src/bw.rs @@ -97,8 +97,12 @@ pub fn check_bw() -> Result<(), Error> { pub fn get_items() -> Result, Error> { let items_raw = sh::sh(format!("{} list items --raw", EXECUTABLE)); - match serde_json::from_str(items_raw.as_str()) { - Ok(val) => Ok(val), + match serde_json::from_str::>(items_raw.as_str()) { + Ok(val) => Ok(val + .iter() + .filter(|x| x.type_ == 1) + .cloned() + .collect::>()), Err(e) => Err(Error::new( ErrorKind::Other, format!("Couldn't get items: {e}"), diff --git a/src/main.rs b/src/main.rs index f306943..229432a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -59,11 +59,9 @@ fn sync() -> Result<(), Error> { } }; - println!("getting pass logins"); let pass_items = pass::get_items(&vault)?; let mut pass_logins = pass::get_logins(pass_items); - println!("getting bw logins"); let mut bw_items = bw::get_items()?; println!(); @@ -93,28 +91,25 @@ fn sync() -> Result<(), Error> { } let pass_login = pass_login.unwrap(); - let bw_password = bw_login.password.clone(); - // TODO: fix this - if let None = bw_password { - continue; - } - let bw_password = bw_password.unwrap(); - + let bw_password = bw_login.password.clone().unwrap_or("".to_string()); let pass_password = pass_login.password.clone(); - let bw_user = bw_login.username.clone(); - if let None = bw_user { - continue; - } - let bw_user = bw_user.unwrap(); - + let bw_user = bw_login.username.clone().unwrap_or("".to_string()); let pass_user = match pass_login.username.is_empty() { true => pass_login.email.clone(), false => pass_login.username.clone(), }; 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( format!("Attempting to update {}:", bw_item.name), 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(); + println!("found bw index {}", bw_index); bw_items.remove(bw_index); let pass_index = pass_logins .iter() .position(|x| x.id == pass_login.id) .unwrap(); + println!("found pass index {}", pass_index); pass_logins.remove(pass_index); } @@ -153,19 +150,12 @@ fn sync() -> Result<(), Error> { ); for bw_item in bw_items { - if let None = bw_item.login { - continue; - } - let login = bw_item.login.unwrap(); - if let None = login.username { - continue; - } let consent = ask_consent( format!("Attempting to create {}:", bw_item.name), - format!("{}", login.username.clone().unwrap()), - format!("{:?}", login.password), + format!("{}", login.username.clone().unwrap_or("".to_string())), + format!("{}", login.password.clone().unwrap_or("".to_string())), )?; if consent { pass::create(