X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi_crud%2Fsrc%2Fprivate_message%2Fread.rs;h=0d3ba8620eb5fe6b3afa02818ba342294d7d437d;hb=c8063f3267cf2b3622f1fdc69128c6b55feefbbc;hp=87d8ee66e28f537975dcb70a7a026dcc2f0f8578;hpb=88215bfbc98b70595035426c06cfe67f4a9ab0ab;p=lemmy.git diff --git a/crates/api_crud/src/private_message/read.rs b/crates/api_crud/src/private_message/read.rs index 87d8ee66..0d3ba862 100644 --- a/crates/api_crud/src/private_message/read.rs +++ b/crates/api_crud/src/private_message/read.rs @@ -1,5 +1,4 @@ -use crate::PerformCrud; -use actix_web::web::Data; +use actix_web::web::{Data, Json, Query}; use lemmy_api_common::{ context::LemmyContext, private_message::{GetPrivateMessages, PrivateMessagesResponse}, @@ -8,40 +7,36 @@ use lemmy_api_common::{ use lemmy_db_views::private_message_view::PrivateMessageQuery; use lemmy_utils::error::LemmyError; -#[async_trait::async_trait(?Send)] -impl PerformCrud for GetPrivateMessages { - type Response = PrivateMessagesResponse; +#[tracing::instrument(skip(context))] +pub async fn get_private_message( + data: Query, + context: Data, +) -> Result, LemmyError> { + let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), &context).await?; + let person_id = local_user_view.person.id; - #[tracing::instrument(skip(self, context))] - async fn perform( - &self, - context: &Data, - ) -> Result { - let data: &GetPrivateMessages = self; - let local_user_view = local_user_view_from_jwt(data.auth.as_ref(), context).await?; - let person_id = local_user_view.person.id; + let page = data.page; + let limit = data.limit; + let unread_only = data.unread_only.unwrap_or_default(); + let creator_id = data.creator_id; + let mut messages = PrivateMessageQuery { + page, + limit, + unread_only, + creator_id, + } + .list(&mut context.pool(), person_id) + .await?; - let page = data.page; - let limit = data.limit; - let unread_only = data.unread_only; - let mut messages = PrivateMessageQuery { - page, - limit, - unread_only, + // Messages sent by ourselves should be marked as read. The `read` column in database is only + // for the recipient, and shouldnt be exposed to sender. + messages.iter_mut().for_each(|pmv| { + if pmv.creator.id == person_id { + pmv.private_message.read = true } - .list(&mut context.pool(), person_id) - .await?; - - // Messages sent by ourselves should be marked as read. The `read` column in database is only - // for the recipient, and shouldnt be exposed to sender. - messages.iter_mut().for_each(|pmv| { - if pmv.creator.id == person_id { - pmv.private_message.read = true - } - }); + }); - Ok(PrivateMessagesResponse { - private_messages: messages, - }) - } + Ok(Json(PrivateMessagesResponse { + private_messages: messages, + })) }