]> Untitled Git - lemmy.git/commitdiff
Adding cross_post fetching to GetPost. Fixes #2127 (#2821)
authorDessalines <dessalines@users.noreply.github.com>
Wed, 19 Apr 2023 20:16:19 +0000 (16:16 -0400)
committerGitHub <noreply@github.com>
Wed, 19 Apr 2023 20:16:19 +0000 (22:16 +0200)
crates/api_common/src/post.rs
crates/api_crud/src/post/read.rs

index 82a1d66499f037d82d998a8957a6363491a10219..af66074acb4b47ffa946a4e7adbb4b1b9916ab37 100644 (file)
@@ -39,6 +39,7 @@ pub struct GetPostResponse {
   pub post_view: PostView,
   pub community_view: CommunityView,
   pub moderators: Vec<CommunityModeratorView>,
+  pub cross_posts: Vec<PostView>,
   pub online: usize,
 }
 
index 0dfb67c411970873592b3142ca7f4628bb1f4ccf..eadb6d11ae8d0a9a058da2d518b606923c3bd429 100644 (file)
@@ -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,
     })
   }
 }