]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/activities/deletion/mod.rs
Moving settings to Database. (#2492)
[lemmy.git] / crates / apub / src / activities / deletion / mod.rs
index 6283ffe0aa2693a7c88f59f4190ad4ee96b6c0d8..0a131c40143fae2be4094723680b7250f3d875a9 100644 (file)
@@ -21,18 +21,18 @@ use crate::{
 };
 use activitypub_federation::{
   core::object_id::ObjectId,
-  traits::ApubObject,
+  traits::{Actor, ApubObject},
   utils::verify_domains_match,
 };
 use activitystreams_kinds::public;
 use lemmy_api_common::utils::blocking;
 use lemmy_db_schema::{
   source::{
-    comment::Comment,
-    community::Community,
+    comment::{Comment, CommentUpdateForm},
+    community::{Community, CommunityUpdateForm},
     person::Person,
-    post::Post,
-    private_message::PrivateMessage,
+    post::{Post, PostUpdateForm},
+    private_message::{PrivateMessage, PrivateMessageUpdateForm},
   },
   traits::Crud,
 };
@@ -65,22 +65,15 @@ pub async fn send_apub_delete_in_community(
   deleted: bool,
   context: &LemmyContext,
 ) -> Result<(), LemmyError> {
-  let (id, activity) = if deleted {
+  let actor = ApubPerson::from(actor);
+  let activity = if deleted {
     let delete = Delete::new(&actor, object, public(), Some(&community), reason, context)?;
-    (delete.id.clone(), AnnouncableActivities::Delete(delete))
+    AnnouncableActivities::Delete(delete)
   } else {
     let undo = UndoDelete::new(&actor, object, public(), Some(&community), reason, context)?;
-    (undo.id.clone(), AnnouncableActivities::UndoDelete(undo))
+    AnnouncableActivities::UndoDelete(undo)
   };
-  send_activity_in_community(
-    activity,
-    &id,
-    &ApubPerson::from(actor),
-    &community.into(),
-    vec![],
-    context,
-  )
-  .await
+  send_activity_in_community(activity, &actor, &community.into(), vec![], context).await
 }
 
 #[tracing::instrument(skip_all)]
@@ -97,15 +90,13 @@ pub async fn send_apub_delete_private_message(
       .into();
 
   let deletable = DeletableObjects::PrivateMessage(Box::new(pm.into()));
-  let inbox = vec![recipient.shared_inbox_or_inbox_url()];
+  let inbox = vec![recipient.shared_inbox_or_inbox()];
   if deleted {
     let delete = Delete::new(actor, deletable, recipient.actor_id(), None, None, context)?;
-    let id = delete.id.clone();
-    send_lemmy_activity(context, &delete, &id, actor, inbox, true).await?;
+    send_lemmy_activity(context, delete, actor, inbox, true).await?;
   } else {
     let undo = UndoDelete::new(actor, deletable, recipient.actor_id(), None, None, context)?;
-    let id = undo.id.clone();
-    send_lemmy_activity(context, &undo, &id, actor, inbox, true).await?;
+    send_lemmy_activity(context, undo, actor, inbox, true).await?;
   };
   Ok(())
 }
@@ -168,7 +159,7 @@ pub(in crate::activities) async fn verify_delete_activity(
       verify_mod_action(
         &activity.actor,
         activity.object.id(),
-        &community,
+        community.id,
         context,
         request_counter,
       )
@@ -217,7 +208,7 @@ async fn verify_delete_post_or_comment(
 ) -> Result<(), LemmyError> {
   verify_person_in_community(actor, community, context, request_counter).await?;
   if is_mod_action {
-    verify_mod_action(actor, object_id, community, context, request_counter).await?;
+    verify_mod_action(actor, object_id, community.id, context, request_counter).await?;
   } else {
     // domain of post ap_id and post.creator ap_id are identical, so we just check the former
     verify_domains_match(actor.inner(), object_id)?;
@@ -238,7 +229,7 @@ async fn receive_delete_action(
     DeletableObjects::Community(community) => {
       if community.local {
         let mod_: Person = actor
-          .dereference::<LemmyError>(context, local_instance(context), request_counter)
+          .dereference(context, local_instance(context), request_counter)
           .await?
           .deref()
           .clone();
@@ -248,7 +239,13 @@ async fn receive_delete_action(
       }
 
       let community = blocking(context.pool(), move |conn| {
-        Community::update_deleted(conn, community.id, deleted)
+        Community::update(
+          conn,
+          community.id,
+          &CommunityUpdateForm::builder()
+            .deleted(Some(deleted))
+            .build(),
+        )
       })
       .await??;
       send_community_ws_message(
@@ -263,7 +260,11 @@ async fn receive_delete_action(
     DeletableObjects::Post(post) => {
       if deleted != post.deleted {
         let deleted_post = blocking(context.pool(), move |conn| {
-          Post::update_deleted(conn, post.id, deleted)
+          Post::update(
+            conn,
+            post.id,
+            &PostUpdateForm::builder().deleted(Some(deleted)).build(),
+          )
         })
         .await??;
         send_post_ws_message(
@@ -279,7 +280,11 @@ async fn receive_delete_action(
     DeletableObjects::Comment(comment) => {
       if deleted != comment.deleted {
         let deleted_comment = blocking(context.pool(), move |conn| {
-          Comment::update_deleted(conn, comment.id, deleted)
+          Comment::update(
+            conn,
+            comment.id,
+            &CommentUpdateForm::builder().deleted(Some(deleted)).build(),
+          )
         })
         .await??;
         send_comment_ws_message_simple(
@@ -292,7 +297,13 @@ async fn receive_delete_action(
     }
     DeletableObjects::PrivateMessage(pm) => {
       let deleted_private_message = blocking(context.pool(), move |conn| {
-        PrivateMessage::update_deleted(conn, pm.id, deleted)
+        PrivateMessage::update(
+          conn,
+          pm.id,
+          &PrivateMessageUpdateForm::builder()
+            .deleted(Some(deleted))
+            .build(),
+        )
       })
       .await??;