2 activities::{private_message::send_websocket_message, verify_activity, verify_person},
6 use activitystreams::{activity::kind::UpdateType, base::BaseExt};
7 use lemmy_apub_lib::{verify_domains_match_opt, ActivityCommonFields, ActivityHandler};
8 use lemmy_db_schema::source::private_message::PrivateMessage;
9 use lemmy_utils::LemmyError;
10 use lemmy_websocket::{LemmyContext, UserOperationCrud};
13 #[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
14 #[serde(rename_all = "camelCase")]
15 pub struct UpdatePrivateMessage {
18 #[serde(rename = "type")]
21 common: ActivityCommonFields,
24 #[async_trait::async_trait(?Send)]
25 impl ActivityHandler for UpdatePrivateMessage {
28 context: &LemmyContext,
29 request_counter: &mut i32,
30 ) -> Result<(), LemmyError> {
31 verify_activity(self.common())?;
32 verify_person(&self.common.actor, context, request_counter).await?;
33 verify_domains_match_opt(&self.common.actor, self.object.id_unchecked())?;
39 context: &LemmyContext,
40 request_counter: &mut i32,
41 ) -> Result<(), LemmyError> {
42 let private_message = PrivateMessage::from_apub(
45 self.common.actor.clone(),
51 send_websocket_message(
53 UserOperationCrud::EditPrivateMessage,
61 fn common(&self) -> &ActivityCommonFields {