use crate::PerformCrud;
use actix_web::web::Data;
use lemmy_api_common::{
- blocking,
- check_person_block,
- get_local_user_view_from_jwt,
- person::{CreatePrivateMessage, PrivateMessageResponse},
+ private_message::{CreatePrivateMessage, PrivateMessageResponse},
+ utils::{
+ blocking,
+ check_person_block,
+ get_interface_language,
+ get_local_user_view_from_jwt,
+ send_email_to_user,
+ },
};
use lemmy_apub::{
generate_local_apub_endpoint,
protocol::activities::{
- private_message::create_or_update::CreateOrUpdatePrivateMessage,
+ create_or_update::private_message::CreateOrUpdatePrivateMessage,
CreateOrUpdateType,
},
EndpointType,
source::private_message::{PrivateMessage, PrivateMessageForm},
traits::Crud,
};
-use lemmy_db_views::local_user_view::LocalUserView;
-use lemmy_utils::{utils::remove_slurs, ApiError, ConnectionId, LemmyError};
-use lemmy_websocket::{
- send::{send_email_to_user, send_pm_ws_message},
- LemmyContext,
- UserOperationCrud,
-};
+use lemmy_db_views::structs::LocalUserView;
+use lemmy_utils::{error::LemmyError, utils::remove_slurs, ConnectionId};
+use lemmy_websocket::{send::send_pm_ws_message, LemmyContext, UserOperationCrud};
#[async_trait::async_trait(?Send)]
impl PerformCrud for CreatePrivateMessage {
type Response = PrivateMessageResponse;
+ #[tracing::instrument(skip(self, context, websocket_id))]
async fn perform(
&self,
context: &Data<LemmyContext>,
{
Ok(private_message) => private_message,
Err(e) => {
- return Err(ApiError::err("couldnt_create_private_message", e).into());
+ return Err(LemmyError::from_error_message(
+ e,
+ "couldnt_create_private_message",
+ ));
}
};
},
)
.await?
- .map_err(|e| ApiError::err("couldnt_create_private_message", e))?;
+ .map_err(|e| e.with_message("couldnt_create_private_message"))?;
CreateOrUpdatePrivateMessage::send(
updated_private_message.into(),
LocalUserView::read_person(conn, recipient_id)
})
.await??;
+ let lang = get_interface_language(&local_recipient);
+ let inbox_link = format!("{}/inbox", context.settings().get_protocol_and_hostname());
send_email_to_user(
&local_recipient,
- "Private Message from",
- "Private Message",
- &content_slurs_removed,
- &context.settings(),
+ &lang.notification_private_message_subject(&local_recipient.person.name),
+ &lang.notification_private_message_body(
+ &inbox_link,
+ &content_slurs_removed,
+ &local_recipient.person.name,
+ ),
+ context.settings(),
);
}