parent
f229f09f92
commit
53a226b944
3 changed files with 51 additions and 1 deletions
|
@ -81,6 +81,8 @@ pub struct GetPosts {
|
||||||
pub show_hidden: Option<bool>,
|
pub show_hidden: Option<bool>,
|
||||||
/// If true, then show the read posts (even if your user setting is to hide them)
|
/// If true, then show the read posts (even if your user setting is to hide them)
|
||||||
pub show_read: Option<bool>,
|
pub show_read: Option<bool>,
|
||||||
|
/// If true, then show the nsfw posts (even if your user setting is to hide them)
|
||||||
|
pub show_nsfw: Option<bool>,
|
||||||
pub page_cursor: Option<PaginationCursor>,
|
pub page_cursor: Option<PaginationCursor>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ pub async fn list_posts(
|
||||||
let saved_only = data.saved_only;
|
let saved_only = data.saved_only;
|
||||||
let show_hidden = data.show_hidden;
|
let show_hidden = data.show_hidden;
|
||||||
let show_read = data.show_read;
|
let show_read = data.show_read;
|
||||||
|
let show_nsfw = data.show_nsfw;
|
||||||
|
|
||||||
let liked_only = data.liked_only;
|
let liked_only = data.liked_only;
|
||||||
let disliked_only = data.disliked_only;
|
let disliked_only = data.disliked_only;
|
||||||
|
@ -84,6 +85,7 @@ pub async fn list_posts(
|
||||||
limit,
|
limit,
|
||||||
show_hidden,
|
show_hidden,
|
||||||
show_read,
|
show_read,
|
||||||
|
show_nsfw,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
.list(&local_site.site, &mut context.pool())
|
.list(&local_site.site, &mut context.pool())
|
||||||
|
|
|
@ -396,7 +396,10 @@ fn queries<'a>() -> Queries<
|
||||||
.filter(not(post::removed.or(post::deleted)));
|
.filter(not(post::removed.or(post::deleted)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if !options.local_user.show_nsfw(site) {
|
if !options
|
||||||
|
.show_nsfw
|
||||||
|
.unwrap_or(options.local_user.show_nsfw(site))
|
||||||
|
{
|
||||||
query = query
|
query = query
|
||||||
.filter(post::nsfw.eq(false))
|
.filter(post::nsfw.eq(false))
|
||||||
.filter(community::nsfw.eq(false));
|
.filter(community::nsfw.eq(false));
|
||||||
|
@ -621,6 +624,7 @@ pub struct PostQuery<'a> {
|
||||||
pub page_back: Option<bool>,
|
pub page_back: Option<bool>,
|
||||||
pub show_hidden: Option<bool>,
|
pub show_hidden: Option<bool>,
|
||||||
pub show_read: Option<bool>,
|
pub show_read: Option<bool>,
|
||||||
|
pub show_nsfw: Option<bool>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> PostQuery<'a> {
|
impl<'a> PostQuery<'a> {
|
||||||
|
@ -1589,6 +1593,48 @@ mod tests {
|
||||||
cleanup(data, pool).await
|
cleanup(data, pool).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
#[serial]
|
||||||
|
async fn post_listings_hide_nsfw() -> LemmyResult<()> {
|
||||||
|
let pool = &build_db_pool().await?;
|
||||||
|
let pool = &mut pool.into();
|
||||||
|
let data = init_data(pool).await?;
|
||||||
|
|
||||||
|
// Mark a post as nsfw
|
||||||
|
let update_form = PostUpdateForm {
|
||||||
|
nsfw: Some(true),
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
Post::update(pool, data.inserted_bot_post.id, &update_form).await?;
|
||||||
|
|
||||||
|
// Make sure you don't see the nsfw post in the regular results
|
||||||
|
let post_listings_hide_nsfw = data.default_post_query().list(&data.site, pool).await?;
|
||||||
|
assert_eq!(vec![POST], names(&post_listings_hide_nsfw));
|
||||||
|
|
||||||
|
// Make sure it does come back with the show_nsfw option
|
||||||
|
let post_listings_show_nsfw = PostQuery {
|
||||||
|
sort: Some(SortType::New),
|
||||||
|
show_nsfw: Some(true),
|
||||||
|
local_user: Some(&data.local_user_view.local_user),
|
||||||
|
..Default::default()
|
||||||
|
}
|
||||||
|
.list(&data.site, pool)
|
||||||
|
.await?;
|
||||||
|
assert_eq!(vec![POST_BY_BOT, POST], names(&post_listings_show_nsfw));
|
||||||
|
|
||||||
|
// Make sure that nsfw field is true.
|
||||||
|
assert!(
|
||||||
|
&post_listings_show_nsfw
|
||||||
|
.first()
|
||||||
|
.ok_or(LemmyErrorType::CouldntFindPost)?
|
||||||
|
.post
|
||||||
|
.nsfw
|
||||||
|
);
|
||||||
|
|
||||||
|
cleanup(data, pool).await
|
||||||
|
}
|
||||||
|
|
||||||
async fn cleanup(data: Data, pool: &mut DbPool<'_>) -> LemmyResult<()> {
|
async fn cleanup(data: Data, pool: &mut DbPool<'_>) -> LemmyResult<()> {
|
||||||
let num_deleted = Post::delete(pool, data.inserted_post.id).await?;
|
let num_deleted = Post::delete(pool, data.inserted_post.id).await?;
|
||||||
Community::delete(pool, data.inserted_community.id).await?;
|
Community::delete(pool, data.inserted_community.id).await?;
|
||||||
|
|
Loading…
Reference in a new issue