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>
This commit is contained in:
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

View File

@ -6,7 +6,7 @@ use lemmy_db_schema::{
fuzzy_search,
limit_and_offset,
newtypes::{CommunityId, PersonId},
schema::{community, community_aggregates, community_block, community_follower},
schema::{community, community_aggregates, community_block, community_follower, local_user},
source::{
community::{Community, CommunityFollower, CommunitySafe},
community_block::CommunityBlock,
@ -167,6 +167,7 @@ impl<'a> CommunityQueryBuilder<'a> {
let mut query = community::table
.inner_join(community_aggregates::table)
.left_join(local_user::table.on(local_user::person_id.eq(person_id_join)))
.left_join(
community_follower::table.on(
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 {
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)),
@ -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() {
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);