3 community::remove_mod::RemoveMod,
4 deletion::{undo_delete::UndoDelete, verify_delete_activity},
7 fetcher::object_id::ObjectId,
10 activity::kind::UndoType,
12 primitives::OneOrMany,
15 use lemmy_apub_lib::{values::PublicUrl, ActivityFields, ActivityHandler};
16 use lemmy_db_schema::source::{community::Community, person::Person};
17 use lemmy_utils::LemmyError;
18 use lemmy_websocket::LemmyContext;
19 use serde::{Deserialize, Serialize};
22 #[derive(Clone, Debug, Deserialize, Serialize, ActivityFields)]
23 #[serde(rename_all = "camelCase")]
24 pub struct UndoRemovePostCommentOrCommunity {
25 actor: ObjectId<Person>,
27 // Note, there is no such thing as Undo/Remove/Mod, so we ignore that
29 cc: [ObjectId<Community>; 1],
30 #[serde(rename = "type")]
33 #[serde(rename = "@context")]
34 context: OneOrMany<AnyBase>,
39 #[async_trait::async_trait(?Send)]
40 impl ActivityHandler for UndoRemovePostCommentOrCommunity {
43 context: &LemmyContext,
44 request_counter: &mut i32,
45 ) -> Result<(), LemmyError> {
46 verify_activity(self)?;
47 self.object.verify(context, request_counter).await?;
49 verify_delete_activity(
50 self.object.object.inner(),
63 context: &LemmyContext,
64 _request_counter: &mut i32,
65 ) -> Result<(), LemmyError> {
66 UndoDelete::receive_undo_remove_action(self.object.object.inner(), context).await