X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapub%2Fsrc%2Factivities%2Fdeletion%2Fdelete.rs;h=8e8bd942f040681740f556628f7fc6c6237cced1;hb=527eefbe92a4796b957fb232831f7e7c80511ed9;hp=cb1fdbd937435807f6b177d1fb89b37f1ece131f;hpb=21346eb786dc75efaca19e6de8a514fab3d33da8;p=lemmy.git diff --git a/crates/apub/src/activities/deletion/delete.rs b/crates/apub/src/activities/deletion/delete.rs index cb1fdbd9..8e8bd942 100644 --- a/crates/apub/src/activities/deletion/delete.rs +++ b/crates/apub/src/activities/deletion/delete.rs @@ -12,7 +12,7 @@ use crate::{ }, activity_queue::send_to_community_new, extensions::context::lemmy_context, - fetcher::person::get_or_fetch_and_upsert_person, + fetcher::object_id::ObjectId, ActorType, }; use activitystreams::{ @@ -49,6 +49,7 @@ use lemmy_websocket::{ UserOperationCrud, }; use serde::{Deserialize, Serialize}; +use serde_with::skip_serializing_none; use url::Url; /// This is very confusing, because there are four distinct cases to handle: @@ -59,13 +60,14 @@ use url::Url; /// /// TODO: we should probably change how community deletions work to simplify this. Probably by /// wrapping it in an announce just like other activities, instead of having the community send it. +#[skip_serializing_none] #[derive(Clone, Debug, Deserialize, Serialize, ActivityFields)] #[serde(rename_all = "camelCase")] pub struct Delete { - actor: Url, + actor: ObjectId, to: [PublicUrl; 1], pub(in crate::activities::deletion) object: Url, - pub(in crate::activities::deletion) cc: [Url; 1], + pub(in crate::activities::deletion) cc: [ObjectId; 1], #[serde(rename = "type")] kind: DeleteType, /// If summary is present, this is a mod action (Remove in Lemmy terms). Otherwise, its a user @@ -138,10 +140,10 @@ impl Delete { summary: Option, ) -> Result { Ok(Delete { - actor: actor.actor_id(), + actor: ObjectId::new(actor.actor_id()), to: [PublicUrl::Public], object: object_id, - cc: [community.actor_id()], + cc: [ObjectId::new(community.actor_id())], kind: DeleteType::Delete, summary, id: generate_activity_id(DeleteType::Delete)?, @@ -165,13 +167,13 @@ impl Delete { } pub(in crate::activities) async fn receive_remove_action( - actor: &Url, + actor: &ObjectId, object: &Url, reason: Option, context: &LemmyContext, request_counter: &mut i32, ) -> Result<(), LemmyError> { - let actor = get_or_fetch_and_upsert_person(actor, context, request_counter).await?; + let actor = actor.dereference(context, request_counter).await?; use UserOperationCrud::*; match DeletableObjects::read_from_db(object, context).await? { DeletableObjects::Community(community) => {