X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapub%2Fsrc%2Factivity_lists.rs;h=4cce3372fa01a6cba14e67efb7e959e97fe05cf3;hb=92568956353f21649ed9aff68b42699c9d036f30;hp=fa8eece38921fbd29bd22c7a354c0b0fb9c07e9d;hpb=bcf5c91f81f54c3a3fda7bdf6b24a077a45413be;p=lemmy.git diff --git a/crates/apub/src/activity_lists.rs b/crates/apub/src/activity_lists.rs index fa8eece3..4cce3372 100644 --- a/crates/apub/src/activity_lists.rs +++ b/crates/apub/src/activity_lists.rs @@ -4,9 +4,10 @@ use crate::{ activities::{ block::{block_user::BlockUser, undo_block_user::UndoBlockUser}, community::{ - add_mod::AddMod, announce::{AnnounceActivity, RawAnnouncableActivities}, - remove_mod::RemoveMod, + collection_add::CollectionAdd, + collection_remove::CollectionRemove, + lock_page::{LockPage, UndoLockPage}, report::Report, update::UpdateCommunity, }, @@ -23,9 +24,13 @@ use crate::{ InCommunity, }, }; -use activitypub_federation::{data::Data, deser::context::WithContext, traits::ActivityHandler}; +use activitypub_federation::{ + config::Data, + protocol::context::WithContext, + traits::ActivityHandler, +}; +use lemmy_api_common::context::LemmyContext; use lemmy_utils::error::LemmyError; -use lemmy_websocket::LemmyContext; use serde::{Deserialize, Serialize}; use url::Url; @@ -52,6 +57,7 @@ pub enum GroupInboxActivities { #[serde(untagged)] #[enum_delegate::implement(ActivityHandler)] pub enum PersonInboxActivities { + Follow(Follow), AcceptFollow(AcceptFollow), UndoFollow(UndoFollow), CreateOrUpdatePrivateMessage(CreateOrUpdateChatMessage), @@ -84,8 +90,10 @@ pub enum AnnouncableActivities { UpdateCommunity(UpdateCommunity), BlockUser(BlockUser), UndoBlockUser(UndoBlockUser), - AddMod(AddMod), - RemoveMod(RemoveMod), + CollectionAdd(CollectionAdd), + CollectionRemove(CollectionRemove), + LockPost(LockPage), + UndoLockPost(UndoLockPage), // For compatibility with Pleroma/Mastodon (send only) Page(Page), } @@ -100,27 +108,25 @@ pub enum SiteInboxActivities { DeleteUser(DeleteUser), } -#[async_trait::async_trait(?Send)] +#[async_trait::async_trait] impl InCommunity for AnnouncableActivities { #[tracing::instrument(skip(self, context))] - async fn community( - &self, - context: &LemmyContext, - request_counter: &mut i32, - ) -> Result { + async fn community(&self, context: &Data) -> Result { use AnnouncableActivities::*; match self { - CreateOrUpdateComment(a) => a.community(context, request_counter).await, - CreateOrUpdatePost(a) => a.community(context, request_counter).await, - Vote(a) => a.community(context, request_counter).await, - UndoVote(a) => a.community(context, request_counter).await, - Delete(a) => a.community(context, request_counter).await, - UndoDelete(a) => a.community(context, request_counter).await, - UpdateCommunity(a) => a.community(context, request_counter).await, - BlockUser(a) => a.community(context, request_counter).await, - UndoBlockUser(a) => a.community(context, request_counter).await, - AddMod(a) => a.community(context, request_counter).await, - RemoveMod(a) => a.community(context, request_counter).await, + CreateOrUpdateComment(a) => a.community(context).await, + CreateOrUpdatePost(a) => a.community(context).await, + Vote(a) => a.community(context).await, + UndoVote(a) => a.community(context).await, + Delete(a) => a.community(context).await, + UndoDelete(a) => a.community(context).await, + UpdateCommunity(a) => a.community(context).await, + BlockUser(a) => a.community(context).await, + UndoBlockUser(a) => a.community(context).await, + CollectionAdd(a) => a.community(context).await, + CollectionRemove(a) => a.community(context).await, + LockPost(a) => a.community(context).await, + UndoLockPost(a) => a.community(context).await, Page(_) => unimplemented!(), } } @@ -128,6 +134,9 @@ impl InCommunity for AnnouncableActivities { #[cfg(test)] mod tests { + #![allow(clippy::unwrap_used)] + #![allow(clippy::indexing_slicing)] + use crate::{ activity_lists::{ GroupInboxActivities, @@ -135,7 +144,7 @@ mod tests { PersonInboxActivitiesWithAnnouncable, SiteInboxActivities, }, - protocol::tests::test_parse_lemmy_item, + protocol::tests::{test_json, test_parse_lemmy_item}, }; #[test] @@ -160,6 +169,8 @@ mod tests { "assets/lemmy/activities/create_or_update/create_private_message.json", ) .unwrap(); + test_json::("assets/mastodon/activities/follow.json") + .unwrap(); } #[test]