]> Untitled Git - lemmy.git/blobdiff - crates/api/src/local_user/block.rs
Get rid of Safe Views, use serde_skip (#2767)
[lemmy.git] / crates / api / src / local_user / block.rs
index 4878cb02045d1ae49bcf292379fa3ac5b6ef791d..6dbf7cffa4c9995e87275c03e0a8f0024c2920bd 100644 (file)
@@ -1,16 +1,16 @@
 use crate::Perform;
 use actix_web::web::Data;
 use lemmy_api_common::{
+  context::LemmyContext,
   person::{BlockPerson, BlockPersonResponse},
-  utils::{blocking, get_local_user_view_from_jwt},
+  utils::get_local_user_view_from_jwt,
 };
 use lemmy_db_schema::{
   source::person_block::{PersonBlock, PersonBlockForm},
   traits::Blockable,
 };
-use lemmy_db_views_actor::structs::PersonViewSafe;
+use lemmy_db_views_actor::structs::PersonView;
 use lemmy_utils::{error::LemmyError, ConnectionId};
-use lemmy_websocket::LemmyContext;
 
 #[async_trait::async_trait(?Send)]
 impl Perform for BlockPerson {
@@ -39,25 +39,24 @@ impl Perform for BlockPerson {
       target_id,
     };
 
+    let target_person_view = PersonView::read(context.pool(), 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);
-      blocking(context.pool(), block)
-        .await?
+      PersonBlock::block(context.pool(), &person_block_form)
+        .await
         .map_err(|e| LemmyError::from_error_message(e, "person_block_already_exists"))?;
     } else {
-      let unblock = move |conn: &'_ _| PersonBlock::unblock(conn, &person_block_form);
-      blocking(context.pool(), unblock)
-        .await?
+      PersonBlock::unblock(context.pool(), &person_block_form)
+        .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,
     };