move unfollow ahead of db removal of peer

This commit is contained in:
glyph 2022-08-22 16:20:23 +01:00
parent f5b91c70b5
commit 459c2e13bd
2 changed files with 38 additions and 22 deletions

View File

@ -202,12 +202,8 @@ pub async fn subscribe_form(
}
}
Err(e) => {
let err_msg = format!(
"Failed to check follow status of peer {}: {}",
&peer.public_key, e
);
warn!("{}", err_msg);
return Err(Flash::error(Redirect::to(uri!(home)), err_msg));
warn!("{}", e);
return Err(Flash::error(Redirect::to(uri!(home)), e));
}
}
}
@ -228,17 +224,24 @@ pub async fn unsubscribe_form(
return Err(Flash::error(Redirect::to(uri!(home)), err_msg));
} else {
info!("Public key {} is valid", &peer.public_key);
if db.remove_peer(&peer.public_key).is_ok() {
info!(
"Removed peer {} from 'peers' database tree",
&peer.public_key
);
sbot::unfollow_if_following(&peer.public_key).await;
} else {
warn!(
"Failed to remove peer {} from 'peers' database tree",
&peer.public_key
);
match sbot::unfollow_if_following(&peer.public_key).await {
Ok(_) => {
if db.remove_peer(&peer.public_key).is_ok() {
info!(
"Removed peer {} from 'peers' database tree",
&peer.public_key
);
} else {
warn!(
"Failed to remove peer {} from 'peers' database tree",
&peer.public_key
);
}
}
Err(e) => {
warn!("{}", e);
return Err(Flash::error(Redirect::to(uri!(home)), e));
}
}
}

View File

@ -40,7 +40,10 @@ pub async fn follow_if_not_following(remote_peer: &str) -> Result<(), String> {
);
Ok(())
}
_ => Err("Unrecognised is_following response value".to_string()),
_ => Err(
"Failed to determine follow status: received unrecognised response from local sbot"
.to_string(),
),
}
} else {
let err_msg = String::from("Received an error during `whoami` RPC call. Please ensure the go-sbot is running and try again");
@ -51,7 +54,7 @@ pub async fn follow_if_not_following(remote_peer: &str) -> Result<(), String> {
/// Check the follow status of a remote peer and unfollow them if already
/// following.
pub async fn unfollow_if_following(remote_peer: &str) {
pub async fn unfollow_if_following(remote_peer: &str) -> Result<(), String> {
if let Ok(whoami) = sbot::whoami().await {
match sbot::is_following(&whoami, remote_peer).await {
Ok(status) if status.as_str() == "true" => {
@ -59,14 +62,24 @@ pub async fn unfollow_if_following(remote_peer: &str) {
match sbot::unfollow_peer(remote_peer).await {
Ok(_) => {
info!("Unfollowed peer {}", &remote_peer);
Ok(())
}
Err(e) => {
let err_msg = format!("Failed to unfollow peer {}: {}", &remote_peer, e);
warn!("{}", err_msg);
Err(err_msg)
}
Err(e) => warn!("Failed to unfollow peer {}: {}", &remote_peer, e),
}
}
_ => (),
_ => Err(
"Failed to determine follow status: received unrecognised response from local sbot"
.to_string(),
),
}
} else {
warn!("Received an error during `whoami` RPC call. Please ensure the go-sbot is running and try again")
let err_msg = String::from("Received an error during `whoami` RPC call. Please ensure the go-sbot is running and try again");
warn!("{}", err_msg);
Err(err_msg)
}
}