]> Untitled Git - lemmy.git/blob - crates/apub/src/activities/private_message/mod.rs
Merge pull request #1660 from LemmyNet/merge-apub-crates
[lemmy.git] / crates / apub / src / activities / private_message / mod.rs
1 use lemmy_api_common::{blocking, person::PrivateMessageResponse};
2 use lemmy_db_schema::PrivateMessageId;
3 use lemmy_db_views::{local_user_view::LocalUserView, private_message_view::PrivateMessageView};
4 use lemmy_utils::LemmyError;
5 use lemmy_websocket::{messages::SendUserRoomMessage, LemmyContext, UserOperationCrud};
6
7 pub mod create;
8 pub mod delete;
9 pub mod undo_delete;
10 pub mod update;
11
12 async fn send_websocket_message(
13   private_message_id: PrivateMessageId,
14   op: UserOperationCrud,
15   context: &LemmyContext,
16 ) -> Result<(), LemmyError> {
17   let message = blocking(context.pool(), move |conn| {
18     PrivateMessageView::read(conn, private_message_id)
19   })
20   .await??;
21   let res = PrivateMessageResponse {
22     private_message_view: message,
23   };
24
25   // Send notifications to the local recipient, if one exists
26   let recipient_id = res.private_message_view.recipient.id;
27   let local_recipient_id = blocking(context.pool(), move |conn| {
28     LocalUserView::read_person(conn, recipient_id)
29   })
30   .await??
31   .local_user
32   .id;
33
34   context.chat_server().do_send(SendUserRoomMessage {
35     op,
36     response: res,
37     local_recipient_id,
38     websocket_id: None,
39   });
40
41   Ok(())
42 }