peach-workspace/peach-web/src/routes/scuttlebutt/unblock.rs

43 lines
1.5 KiB
Rust

use peach_lib::sbot::SbotStatus;
use rouille::{post_input, try_or_400, Request, Response};
use crate::utils::{flash::FlashResponse, sbot};
// ROUTE: /scuttlebutt/unblock
/// Unblock a Scuttlebutt profile specified by the given public key.
///
/// Parse the public key from the submitted form and publish a contact message.
/// Redirect to the appropriate profile page with a flash message describing
/// the outcome of the action (may be successful or unsuccessful).
pub fn handle_form(request: &Request) -> Response {
// query the request body for form data
// return a 400 error if the admin_id field is missing
let data = try_or_400!(post_input!(request, {
public_key: String,
}));
let (flash_name, flash_msg) = match SbotStatus::read() {
Ok(status) if status.state == Some("active".to_string()) => {
match sbot::unblock_peer(&data.public_key) {
Ok(success_msg) => (
"flash_name=success".to_string(),
format!("flash_msg={}", success_msg),
),
Err(error_msg) => (
"flash_name=error".to_string(),
format!("flash_msg={}", error_msg),
),
}
}
_ => (
"flash_name=warning".to_string(),
"Social interactions are unavailable.".to_string(),
),
};
let url = format!("/scuttlebutt/profile/{}", data.public_key);
Response::redirect_303(url).add_flash(flash_name, flash_msg)
}