]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/activities/deletion/delete_user.rs
Split activity table into sent and received parts (fixes #3103) (#3583)
[lemmy.git] / crates / apub / src / activities / deletion / delete_user.rs
index e5c1021ccd547a10fc2b0b3b26ab4d92d726ca99..b388ed9e1ec597642a672756f65a33495af069a3 100644 (file)
@@ -1,6 +1,6 @@
 use crate::{
   activities::{generate_activity_id, send_lemmy_activity, verify_is_public, verify_person},
-  insert_activity,
+  insert_received_activity,
   objects::{instance::remote_instance_inboxes, person::ApubPerson},
   protocol::activities::deletion::delete_user::DeleteUser,
   SendActivity,
@@ -14,7 +14,7 @@ use activitypub_federation::{
 use lemmy_api_common::{
   context::LemmyContext,
   person::{DeleteAccount, DeleteAccountResponse},
-  utils::{delete_user_account, get_local_user_view_from_jwt},
+  utils::{delete_user_account, local_user_view_from_jwt},
 };
 use lemmy_utils::error::LemmyError;
 use url::Url;
@@ -28,12 +28,11 @@ impl SendActivity for DeleteAccount {
     _response: &Self::Response,
     context: &Data<LemmyContext>,
   ) -> Result<(), LemmyError> {
-    let local_user_view =
-      get_local_user_view_from_jwt(&request.auth, context.pool(), context.secret()).await?;
+    let local_user_view = local_user_view_from_jwt(&request.auth, context).await?;
     let actor: ApubPerson = local_user_view.person.into();
     delete_user_account(
       actor.id,
-      context.pool(),
+      &mut context.pool(),
       context.settings(),
       context.client(),
     )
@@ -52,7 +51,7 @@ impl SendActivity for DeleteAccount {
       cc: vec![],
     };
 
-    let inboxes = remote_instance_inboxes(context.pool()).await?;
+    let inboxes = remote_instance_inboxes(&mut context.pool()).await?;
     send_lemmy_activity(context, delete, &actor, inboxes, true).await?;
     Ok(())
   }
@@ -74,6 +73,7 @@ impl ActivityHandler for DeleteUser {
   }
 
   async fn verify(&self, context: &Data<Self::DataType>) -> Result<(), LemmyError> {
+    insert_received_activity(&self.id, context).await?;
     verify_is_public(&self.to, &[])?;
     verify_person(&self.actor, context).await?;
     verify_urls_match(self.actor.inner(), self.object.inner())?;
@@ -81,11 +81,10 @@ impl ActivityHandler for DeleteUser {
   }
 
   async fn receive(self, context: &Data<Self::DataType>) -> Result<(), LemmyError> {
-    insert_activity(&self.id, &self, false, false, context).await?;
     let actor = self.actor.dereference(context).await?;
     delete_user_account(
       actor.id,
-      context.pool(),
+      &mut context.pool(),
       context.settings(),
       context.client(),
     )