X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapub%2Fsrc%2Factivities%2Fcommunity%2Freport.rs;h=67b84644e6b473078d7833823cdcb4780828178c;hb=e9e76549a88cfbdab36f00d302cceabcaaa24f4c;hp=57b1244d106803500c8e46079c26bda412a2bd51;hpb=c6c52ab9ccde330b5012f8d0ce4fc8f26628d5cc;p=lemmy.git diff --git a/crates/apub/src/activities/community/report.rs b/crates/apub/src/activities/community/report.rs index 57b1244d..67b84644 100644 --- a/crates/apub/src/activities/community/report.rs +++ b/crates/apub/src/activities/community/report.rs @@ -1,24 +1,22 @@ use crate::{ activities::{generate_activity_id, send_lemmy_activity, verify_person_in_community}, - local_instance, + insert_received_activity, objects::{community::ApubCommunity, person::ApubPerson}, protocol::{activities::community::report::Report, InCommunity}, - ActorType, PostOrComment, SendActivity, }; use activitypub_federation::{ - core::object_id::ObjectId, - data::Data, + config::Data, + fetch::object_id::ObjectId, + kinds::activity::FlagType, traits::{ActivityHandler, Actor}, }; -use activitystreams_kinds::activity::FlagType; use lemmy_api_common::{ comment::{CommentReportResponse, CreateCommentReport}, context::LemmyContext, post::{CreatePostReport, PostReportResponse}, - utils::get_local_user_view_from_jwt, - websocket::{messages::SendModRoomMessage, UserOperation}, + utils::local_user_view_from_jwt, }; use lemmy_db_schema::{ source::{ @@ -27,25 +25,23 @@ use lemmy_db_schema::{ }, traits::Reportable, }; -use lemmy_db_views::structs::{CommentReportView, PostReportView}; use lemmy_utils::error::LemmyError; use url::Url; -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait] impl SendActivity for CreatePostReport { type Response = PostReportResponse; async fn send_activity( request: &Self, response: &Self::Response, - context: &LemmyContext, + context: &Data, ) -> 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?; Report::send( - ObjectId::new(response.post_report_view.post.ap_id.clone()), + ObjectId::from(response.post_report_view.post.ap_id.clone()), &local_user_view.person.into(), - ObjectId::new(response.post_report_view.community.actor_id.clone()), + ObjectId::from(response.post_report_view.community.actor_id.clone()), request.reason.to_string(), context, ) @@ -53,21 +49,20 @@ impl SendActivity for CreatePostReport { } } -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait] impl SendActivity for CreateCommentReport { type Response = CommentReportResponse; async fn send_activity( request: &Self, response: &Self::Response, - context: &LemmyContext, + context: &Data, ) -> 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?; Report::send( - ObjectId::new(response.comment_report_view.comment.ap_id.clone()), + ObjectId::from(response.comment_report_view.comment.ap_id.clone()), &local_user_view.person.into(), - ObjectId::new(response.comment_report_view.community.actor_id.clone()), + ObjectId::from(response.comment_report_view.community.actor_id.clone()), request.reason.to_string(), context, ) @@ -82,7 +77,7 @@ impl Report { actor: &ApubPerson, community_id: ObjectId, reason: String, - context: &LemmyContext, + context: &Data, ) -> Result<(), LemmyError> { let community = community_id.dereference_local(context).await?; let kind = FlagType::Flag; @@ -91,13 +86,13 @@ impl Report { &context.settings().get_protocol_and_hostname(), )?; let report = Report { - actor: ObjectId::new(actor.actor_id()), - to: [ObjectId::new(community.actor_id())], + actor: actor.id().into(), + to: [community.id().into()], object: object_id, summary: reason, kind, id: id.clone(), - audience: Some(ObjectId::new(community.actor_id())), + audience: Some(community.id().into()), }; let inbox = vec![community.shared_inbox_or_inbox()]; @@ -105,7 +100,7 @@ impl Report { } } -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait] impl ActivityHandler for Report { type DataType = LemmyContext; type Error = LemmyError; @@ -119,31 +114,17 @@ impl ActivityHandler for Report { } #[tracing::instrument(skip_all)] - async fn verify( - &self, - context: &Data, - request_counter: &mut i32, - ) -> Result<(), LemmyError> { - let community = self.community(context, request_counter).await?; - verify_person_in_community(&self.actor, &community, context, request_counter).await?; + async fn verify(&self, context: &Data) -> Result<(), LemmyError> { + insert_received_activity(&self.id, context).await?; + let community = self.community(context).await?; + verify_person_in_community(&self.actor, &community, context).await?; Ok(()) } #[tracing::instrument(skip_all)] - async fn receive( - self, - context: &Data, - request_counter: &mut i32, - ) -> Result<(), LemmyError> { - let actor = self - .actor - .dereference(context, local_instance(context).await, request_counter) - .await?; - match self - .object - .dereference(context, local_instance(context).await, request_counter) - .await? - { + async fn receive(self, context: &Data) -> Result<(), LemmyError> { + let actor = self.actor.dereference(context).await?; + match self.object.dereference(context).await? { PostOrComment::Post(post) => { let report_form = PostReportForm { creator_id: actor.id, @@ -153,17 +134,7 @@ impl ActivityHandler for Report { reason: self.summary, original_post_body: post.body.clone(), }; - - let report = PostReport::report(context.pool(), &report_form).await?; - - let post_report_view = PostReportView::read(context.pool(), report.id, actor.id).await?; - - context.chat_server().do_send(SendModRoomMessage { - op: UserOperation::CreateCommentReport, - response: PostReportResponse { post_report_view }, - community_id: post.community_id, - websocket_id: None, - }); + PostReport::report(&mut context.pool(), &report_form).await?; } PostOrComment::Comment(comment) => { let report_form = CommentReportForm { @@ -172,21 +143,7 @@ impl ActivityHandler for Report { original_comment_text: comment.content.clone(), reason: self.summary, }; - - let report = CommentReport::report(context.pool(), &report_form).await?; - - let comment_report_view = - CommentReportView::read(context.pool(), report.id, actor.id).await?; - let community_id = comment_report_view.community.id; - - context.chat_server().do_send(SendModRoomMessage { - op: UserOperation::CreateCommentReport, - response: CommentReportResponse { - comment_report_view, - }, - community_id, - websocket_id: None, - }); + CommentReport::report(&mut context.pool(), &report_form).await?; } }; Ok(())