Show nsfw communities if you are logged in and searching communities (#2105)

* Show nsfw communities in logged in and you've enabled nsfw in your profile atleast

* Reuse existing user check

Co-authored-by: Sun Wukong <monkey@king.com>
pull/2111/head
dayinjing 2022-03-02 11:39:27 -06:00 committed by GitHub
parent 63565712ad
commit bc3927a9bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 6 deletions

View File

@ -6,7 +6,7 @@ use lemmy_db_schema::{
fuzzy_search, fuzzy_search,
limit_and_offset, limit_and_offset,
newtypes::{CommunityId, PersonId}, newtypes::{CommunityId, PersonId},
schema::{community, community_aggregates, community_block, community_follower}, schema::{community, community_aggregates, community_block, community_follower, local_user},
source::{ source::{
community::{Community, CommunityFollower, CommunitySafe}, community::{Community, CommunityFollower, CommunitySafe},
community_block::CommunityBlock, community_block::CommunityBlock,
@ -167,6 +167,7 @@ impl<'a> CommunityQueryBuilder<'a> {
let mut query = community::table let mut query = community::table
.inner_join(community_aggregates::table) .inner_join(community_aggregates::table)
.left_join(local_user::table.on(local_user::person_id.eq(person_id_join)))
.left_join( .left_join(
community_follower::table.on( community_follower::table.on(
community::id community::id
@ -232,10 +233,6 @@ impl<'a> CommunityQueryBuilder<'a> {
} }
}; };
if !self.show_nsfw.unwrap_or(false) {
query = query.filter(community::nsfw.eq(false));
};
if let Some(listing_type) = self.listing_type { if let Some(listing_type) = self.listing_type {
query = match listing_type { query = match listing_type {
ListingType::Subscribed => query.filter(community_follower::person_id.is_not_null()), // TODO could be this: and(community_follower::person_id.eq(person_id_join)), ListingType::Subscribed => query.filter(community_follower::person_id.is_not_null()), // TODO could be this: and(community_follower::person_id.eq(person_id_join)),
@ -244,9 +241,15 @@ impl<'a> CommunityQueryBuilder<'a> {
}; };
} }
// Don't show blocked communities // Don't show blocked communities or nsfw communities if not enabled in profile
if self.my_person_id.is_some() { if self.my_person_id.is_some() {
query = query.filter(community_block::person_id.is_null()); query = query.filter(community_block::person_id.is_null());
query = query.filter(community::nsfw.eq(false).or(local_user::show_nsfw.eq(true)));
} else {
// No person in request, only show nsfw communities if show_nsfw passed into request
if !self.show_nsfw.unwrap_or(false) {
query = query.filter(community::nsfw.eq(false));
}
} }
let (limit, offset) = limit_and_offset(self.page, self.limit); let (limit, offset) = limit_and_offset(self.page, self.limit);