From 1e26709cb4c8628f240516e897198c34bd9b8618 Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 19 Apr 2023 16:16:19 -0400 Subject: [PATCH] Adding cross_post fetching to GetPost. Fixes #2127 (#2821) --- crates/api_common/src/post.rs | 1 + crates/api_crud/src/post/read.rs | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/crates/api_common/src/post.rs b/crates/api_common/src/post.rs index 82a1d6649..af66074ac 100644 --- a/crates/api_common/src/post.rs +++ b/crates/api_common/src/post.rs @@ -39,6 +39,7 @@ pub struct GetPostResponse { pub post_view: PostView, pub community_view: CommunityView, pub moderators: Vec, + pub cross_posts: Vec, pub online: usize, } diff --git a/crates/api_crud/src/post/read.rs b/crates/api_crud/src/post/read.rs index 0dfb67c41..eadb6d11a 100644 --- a/crates/api_crud/src/post/read.rs +++ b/crates/api_crud/src/post/read.rs @@ -16,7 +16,7 @@ use lemmy_db_schema::{ source::{comment::Comment, local_site::LocalSite, post::Post}, traits::Crud, }; -use lemmy_db_views::structs::PostView; +use lemmy_db_views::{post_view::PostQuery, structs::PostView}; use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView}; use lemmy_utils::{error::LemmyError, ConnectionId}; @@ -96,6 +96,18 @@ impl PerformCrud for GetPost { let moderators = CommunityModeratorView::for_community(context.pool(), community_id).await?; + // Fetch the cross_posts + let cross_posts = if let Some(url) = &post_view.post.url { + PostQuery::builder() + .pool(context.pool()) + .url_search(Some(url.inner().as_str().into())) + .build() + .list() + .await? + } else { + Vec::new() + }; + let online = context .chat_server() .send(GetPostUsersOnline { post_id }) @@ -107,6 +119,7 @@ impl PerformCrud for GetPost { community_view, moderators, online, + cross_posts, }) } }