]> Untitled Git - lemmy.git/blobdiff - crates/api_crud/src/private_message/create.rs
Implement reports for private messages (#2433)
[lemmy.git] / crates / api_crud / src / private_message / create.rs
index 3eddf0a5c5a1752444f0ad803cd2dfa80f93d10d..278031311ed938504c0d1a82731bb687e8e71735 100644 (file)
@@ -1,11 +1,14 @@
 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},
-  send_email_to_user,
+  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,
@@ -19,8 +22,8 @@ use lemmy_db_schema::{
   source::private_message::{PrivateMessage, PrivateMessageForm},
   traits::Crud,
 };
-use lemmy_db_views::local_user_view::LocalUserView;
-use lemmy_utils::{utils::remove_slurs, ConnectionId, LemmyError};
+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)]
@@ -56,7 +59,10 @@ impl PerformCrud for CreatePrivateMessage {
     {
       Ok(private_message) => private_message,
       Err(e) => {
-        return Err(LemmyError::from(e).with_message("couldnt_create_private_message"));
+        return Err(LemmyError::from_error_message(
+          e,
+          "couldnt_create_private_message",
+        ));
       }
     };
 
@@ -78,7 +84,6 @@ impl PerformCrud for CreatePrivateMessage {
       },
     )
     .await?
-    .map_err(LemmyError::from)
     .map_err(|e| e.with_message("couldnt_create_private_message"))?;
 
     CreateOrUpdatePrivateMessage::send(
@@ -104,12 +109,17 @@ impl PerformCrud for CreatePrivateMessage {
         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(),
       );
     }