X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi_crud%2Fsrc%2Fprivate_message%2Fread.rs;h=0d3ba8620eb5fe6b3afa02818ba342294d7d437d;hb=c8063f3267cf2b3622f1fdc69128c6b55feefbbc;hp=da2bc690bfbb88787dfdac08c65ea1a693a874ee;hpb=a5707328cff0133373491ef8e8908faeefacfa30;p=lemmy.git diff --git a/crates/api_crud/src/private_message/read.rs b/crates/api_crud/src/private_message/read.rs index da2bc690..0d3ba862 100644 --- a/crates/api_crud/src/private_message/read.rs +++ b/crates/api_crud/src/private_message/read.rs @@ -1,50 +1,42 @@ -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}, utils::local_user_view_from_jwt, }; use lemmy_db_views::private_message_view::PrivateMessageQuery; -use lemmy_utils::{error::LemmyError, ConnectionId}; +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, _websocket_id))] - async fn perform( - &self, - context: &Data, - _websocket_id: Option, - ) -> 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; - let mut messages = PrivateMessageQuery::builder() - .pool(context.pool()) - .recipient_id(person_id) - .page(page) - .limit(limit) - .unread_only(unread_only) - .build() - .list() - .await?; + 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?; - // 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 - } - }); + // 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, + })) }