43 lines
1.5 KiB
Rust
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/block
|
|
|
|
/// Block 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::block_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)
|
|
}
|