add new flag to api (#3363)

This commit is contained in:
Domenic Horner 2023-06-27 18:45:26 +08:00 committed by GitHub
parent 2aef6a5a33
commit d1d90af0eb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 2 deletions

View file

@ -76,6 +76,7 @@ pub struct CommunityResponse {
pub struct ListCommunities { pub struct ListCommunities {
pub type_: Option<ListingType>, pub type_: Option<ListingType>,
pub sort: Option<SortType>, pub sort: Option<SortType>,
pub show_nsfw: Option<bool>,
pub page: Option<i64>, pub page: Option<i64>,
pub limit: Option<i64>, pub limit: Option<i64>,
pub auth: Option<Sensitive<String>>, pub auth: Option<Sensitive<String>>,

View file

@ -27,12 +27,14 @@ impl PerformCrud for ListCommunities {
let sort = data.sort; let sort = data.sort;
let listing_type = data.type_; let listing_type = data.type_;
let show_nsfw = data.show_nsfw;
let page = data.page; let page = data.page;
let limit = data.limit; let limit = data.limit;
let local_user = local_user_view.map(|l| l.local_user); let local_user = local_user_view.map(|l| l.local_user);
let communities = CommunityQuery::builder() let communities = CommunityQuery::builder()
.pool(context.pool()) .pool(context.pool())
.listing_type(listing_type) .listing_type(listing_type)
.show_nsfw(show_nsfw)
.sort(sort) .sort(sort)
.local_user(local_user.as_ref()) .local_user(local_user.as_ref())
.page(page) .page(page)

View file

@ -126,6 +126,7 @@ pub struct CommunityQuery<'a> {
local_user: Option<&'a LocalUser>, local_user: Option<&'a LocalUser>,
search_term: Option<String>, search_term: Option<String>,
is_mod_or_admin: Option<bool>, is_mod_or_admin: Option<bool>,
show_nsfw: Option<bool>,
page: Option<i64>, page: Option<i64>,
limit: Option<i64>, limit: Option<i64>,
} }
@ -203,8 +204,8 @@ impl<'a> CommunityQuery<'a> {
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))); query = query.filter(community::nsfw.eq(false).or(local_user::show_nsfw.eq(true)));
} else { } else {
// No person in request, only show nsfw communities if show_nsfw passed into request // No person in request, only show nsfw communities if show_nsfw is passed into request
if !self.local_user.map(|l| l.show_nsfw).unwrap_or(false) { if !self.show_nsfw.unwrap_or(false) {
query = query.filter(community::nsfw.eq(false)); query = query.filter(community::nsfw.eq(false));
} }
} }