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:
parent
63565712ad
commit
bc3927a9bd
1 changed files with 9 additions and 6 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue