+#[async_trait::async_trait]
+impl SendActivity for DeleteAccount {
+ type Response = DeleteAccountResponse;
+
+ async fn send_activity(
+ request: &Self,
+ _response: &Self::Response,
+ context: &Data<LemmyContext>,
+ ) -> Result<(), LemmyError> {
+ 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,
+ &mut context.pool(),
+ context.settings(),
+ context.client(),
+ )
+ .await?;
+
+ let id = generate_activity_id(
+ DeleteType::Delete,
+ &context.settings().get_protocol_and_hostname(),
+ )?;
+ let delete = DeleteUser {
+ actor: actor.id().into(),
+ to: vec![public()],
+ object: actor.id().into(),
+ kind: DeleteType::Delete,
+ id: id.clone(),
+ cc: vec![],
+ };
+
+ let inboxes = remote_instance_inboxes(&mut context.pool()).await?;
+ send_lemmy_activity(context, delete, &actor, inboxes, true).await?;
+ Ok(())
+ }
+}
+