mirror of
https://github.com/LemmyNet/lemmy.git
synced 2024-12-27 11:08:26 +00:00
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
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue