use crate::Perform;
use actix_web::web::Data;
use lemmy_api_common::{
- blocking,
- get_local_user_view_from_jwt,
person::{BlockPerson, BlockPersonResponse},
+ utils::{blocking, get_local_user_view_from_jwt},
};
use lemmy_db_schema::{
source::person_block::{PersonBlock, PersonBlockForm},
traits::Blockable,
};
-use lemmy_db_views_actor::person_view::PersonViewSafe;
-use lemmy_utils::{ConnectionId, LemmyError};
+use lemmy_db_views_actor::structs::PersonViewSafe;
+use lemmy_utils::{error::LemmyError, ConnectionId};
use lemmy_websocket::LemmyContext;
#[async_trait::async_trait(?Send)]
target_id,
};
+ let target_person_view = blocking(context.pool(), move |conn| {
+ PersonViewSafe::read(conn, target_id)
+ })
+ .await??;
+
+ if target_person_view.person.admin {
+ return Err(LemmyError::from_message("cant_block_admin"));
+ }
+
if data.block {
- let block = move |conn: &'_ _| PersonBlock::block(conn, &person_block_form);
+ let block = move |conn: &mut _| PersonBlock::block(conn, &person_block_form);
blocking(context.pool(), block)
.await?
.map_err(|e| LemmyError::from_error_message(e, "person_block_already_exists"))?;
} else {
- let unblock = move |conn: &'_ _| PersonBlock::unblock(conn, &person_block_form);
+ let unblock = move |conn: &mut _| PersonBlock::unblock(conn, &person_block_form);
blocking(context.pool(), unblock)
.await?
.map_err(|e| LemmyError::from_error_message(e, "person_block_already_exists"))?;
}
- let person_view = blocking(context.pool(), move |conn| {
- PersonViewSafe::read(conn, target_id)
- })
- .await??;
-
let res = BlockPersonResponse {
- person_view,
+ person_view: target_person_view,
blocked: data.block,
};