+ let undo = UndoDelete::new(&actor, object, public(), Some(&community), reason, &context)?;
+ AnnouncableActivities::UndoDelete(undo)
+ };
+ send_activity_in_community(
+ activity,
+ &actor,
+ &community.into(),
+ vec![],
+ is_mod_action,
+ &context,
+ )
+ .await
+}
+
+#[tracing::instrument(skip_all)]
+pub(crate) async fn send_apub_delete_private_message(
+ actor: &ApubPerson,
+ pm: PrivateMessage,
+ deleted: bool,
+ context: Data<LemmyContext>,
+) -> Result<(), LemmyError> {
+ let recipient_id = pm.recipient_id;
+ let recipient: ApubPerson = Person::read(&mut context.pool(), recipient_id)
+ .await?
+ .into();
+
+ let deletable = DeletableObjects::PrivateMessage(pm.into());
+ let inbox = vec![recipient.shared_inbox_or_inbox()];
+ if deleted {
+ let delete = Delete::new(actor, deletable, recipient.id(), None, None, &context)?;
+ send_lemmy_activity(&context, delete, actor, inbox, true).await?;
+ } else {
+ let undo = UndoDelete::new(actor, deletable, recipient.id(), None, None, &context)?;
+ send_lemmy_activity(&context, undo, actor, inbox, true).await?;
+ };
+ Ok(())