From e58a167d642c3b285dd25a28917ec49846ad6b35 Mon Sep 17 00:00:00 2001
From: Nutomic <me@nutomic.com>
Date: Wed, 22 Nov 2023 15:41:52 +0100
Subject: [PATCH] Fix remote community posts appearing in local listing (fixes
 #4180) (#4181)

* Fix remote community posts appearing in local listing (fixes #4180)

* fmt

* fix typo
---
 api_tests/src/shared.ts          |  1 +
 crates/db_views/src/post_view.rs | 13 +++++++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/api_tests/src/shared.ts b/api_tests/src/shared.ts
index f6668be08..abd3093e3 100644
--- a/api_tests/src/shared.ts
+++ b/api_tests/src/shared.ts
@@ -290,6 +290,7 @@ export async function searchPostLocal(
     q: post.name,
     type_: "Posts",
     sort: "TopAll",
+    listing_type: "All",
   };
   return api.search(form);
 }
diff --git a/crates/db_views/src/post_view.rs b/crates/db_views/src/post_view.rs
index 87f50471c..e133d9e4a 100644
--- a/crates/db_views/src/post_view.rs
+++ b/crates/db_views/src/post_view.rs
@@ -344,7 +344,7 @@ fn queries<'a>() -> Queries<
       query = query.filter(post_aggregates::creator_id.eq(creator_id));
     }
 
-    if let (Some(listing_type), Some(person_id)) = (options.listing_type, person_id) {
+    if let Some(person_id) = person_id {
       let is_subscribed = exists(
         community_follower::table.filter(
           post_aggregates::community_id
@@ -352,7 +352,7 @@ fn queries<'a>() -> Queries<
             .and(community_follower::person_id.eq(person_id)),
         ),
       );
-      match listing_type {
+      match options.listing_type.unwrap_or_default() {
         ListingType::Subscribed => query = query.filter(is_subscribed),
         ListingType::Local => {
           query = query
@@ -370,6 +370,15 @@ fn queries<'a>() -> Queries<
           ));
         }
       }
+    } else {
+      match options.listing_type.unwrap_or_default() {
+        ListingType::Local => {
+          query = query
+            .filter(community::local.eq(true))
+            .filter(community::hidden.eq(false));
+        }
+        _ => query = query.filter(community::hidden.eq(false)),
+      }
     }
 
     if let Some(url_search) = &options.url_search {
-- 
GitLab