Adding cross_post fetching to GetPost. Fixes #2127 (#2821)

This commit is contained in:
Dessalines 2023-04-19 16:16:19 -04:00 committed by GitHub
parent 85ef507ac7
commit 1e26709cb4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View file

@ -39,6 +39,7 @@ pub struct GetPostResponse {
pub post_view: PostView, pub post_view: PostView,
pub community_view: CommunityView, pub community_view: CommunityView,
pub moderators: Vec<CommunityModeratorView>, pub moderators: Vec<CommunityModeratorView>,
pub cross_posts: Vec<PostView>,
pub online: usize, pub online: usize,
} }

View file

@ -16,7 +16,7 @@ use lemmy_db_schema::{
source::{comment::Comment, local_site::LocalSite, post::Post}, source::{comment::Comment, local_site::LocalSite, post::Post},
traits::Crud, 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_db_views_actor::structs::{CommunityModeratorView, CommunityView};
use lemmy_utils::{error::LemmyError, ConnectionId}; use lemmy_utils::{error::LemmyError, ConnectionId};
@ -96,6 +96,18 @@ impl PerformCrud for GetPost {
let moderators = CommunityModeratorView::for_community(context.pool(), community_id).await?; 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 let online = context
.chat_server() .chat_server()
.send(GetPostUsersOnline { post_id }) .send(GetPostUsersOnline { post_id })
@ -107,6 +119,7 @@ impl PerformCrud for GetPost {
community_view, community_view,
moderators, moderators,
online, online,
cross_posts,
}) })
} }
} }