X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapub%2Fsrc%2Factivities%2Fcommunity%2Fannounce.rs;h=ed489158ef1b157287a896a3e38f1fac935f5870;hb=e9e76549a88cfbdab36f00d302cceabcaaa24f4c;hp=116b027269b1d13c4e9bcf0e61f4d319d6e2811e;hpb=6f513793cbd8e7427812638335b55dbb0547ffec;p=lemmy.git diff --git a/crates/apub/src/activities/community/announce.rs b/crates/apub/src/activities/community/announce.rs index 116b0272..ed489158 100644 --- a/crates/apub/src/activities/community/announce.rs +++ b/crates/apub/src/activities/community/announce.rs @@ -6,7 +6,7 @@ use crate::{ verify_person_in_community, }, activity_lists::AnnouncableActivities, - insert_activity, + insert_received_activity, objects::community::ApubCommunity, protocol::{ activities::community::announce::{AnnounceActivity, RawAnnouncableActivities}, @@ -21,7 +21,7 @@ use activitypub_federation::{ traits::{ActivityHandler, Actor}, }; use lemmy_api_common::context::LemmyContext; -use lemmy_utils::error::LemmyError; +use lemmy_utils::error::{LemmyError, LemmyErrorType}; use serde_json::Value; use url::Url; @@ -48,7 +48,7 @@ impl ActivityHandler for RawAnnouncableActivities { let activity: AnnouncableActivities = self.clone().try_into()?; // This is only for sending, not receiving so we reject it. if let AnnouncableActivities::Page(_) = activity { - return Err(LemmyError::from_message("Cant receive page")); + return Err(LemmyErrorType::CannotReceivePage)?; } let community = activity.community(data).await?; let actor_id = activity.actor().clone().into(); @@ -133,18 +133,18 @@ impl ActivityHandler for AnnounceActivity { } #[tracing::instrument(skip_all)] - async fn verify(&self, _context: &Data) -> Result<(), LemmyError> { + async fn verify(&self, context: &Data) -> Result<(), LemmyError> { + insert_received_activity(&self.id, context).await?; verify_is_public(&self.to, &self.cc)?; Ok(()) } #[tracing::instrument(skip_all)] async fn receive(self, context: &Data) -> Result<(), LemmyError> { - insert_activity(&self.id, &self, false, false, context).await?; let object: AnnouncableActivities = self.object.object(context).await?.try_into()?; // This is only for sending, not receiving so we reject it. if let AnnouncableActivities::Page(_) = object { - return Err(LemmyError::from_message("Cant receive page")); + return Err(LemmyErrorType::CannotReceivePage)?; } // verify here in order to avoid fetching the object twice over http