diff --git a/src/search.rs b/src/search.rs index 3547679..fd1fbaf 100644 --- a/src/search.rs +++ b/src/search.rs @@ -42,6 +42,8 @@ struct SearchTemplate { /// Whether all fetched posts are filtered (to differentiate between no posts fetched in the first place, /// and all fetched posts being filtered). all_posts_filtered: bool, + /// Whether any posts were hidden because they are NSFW (and user has disabled show NSFW) + any_posts_hidden_nsfw: bool, } // SERVICES @@ -100,12 +102,13 @@ pub async fn find(req: Request) -> Result, String> { url, is_filtered: true, all_posts_filtered: false, + any_posts_hidden_nsfw: false, }) } else { match Post::fetch(&path, quarantined).await { Ok((mut posts, after)) => { let all_posts_filtered = filter_posts(&mut posts, &filters); - + let any_posts_hidden_nsfw = posts.iter().any(|p| p.flags.nsfw) && setting(&req, "show_nsfw") != "on"; template(SearchTemplate { posts, subreddits, @@ -123,6 +126,7 @@ pub async fn find(req: Request) -> Result, String> { url, is_filtered: false, all_posts_filtered, + any_posts_hidden_nsfw, }) } Err(msg) => { diff --git a/src/subreddit.rs b/src/subreddit.rs index 141c011..37cdaae 100644 --- a/src/subreddit.rs +++ b/src/subreddit.rs @@ -25,6 +25,8 @@ struct SubredditTemplate { /// Whether all fetched posts are filtered (to differentiate between no posts fetched in the first place, /// and all fetched posts being filtered). all_posts_filtered: bool, + /// Whether any posts were hidden because they are NSFW (and user has disabled show NSFW) + any_posts_hidden_nsfw: bool, } #[derive(Template)] @@ -112,12 +114,13 @@ pub async fn community(req: Request) -> Result, String> { redirect_url, is_filtered: true, all_posts_filtered: false, + any_posts_hidden_nsfw: false, }) } else { match Post::fetch(&path, quarantined).await { Ok((mut posts, after)) => { let all_posts_filtered = filter_posts(&mut posts, &filters); - + let any_posts_hidden_nsfw = posts.iter().any(|p| p.flags.nsfw) && setting(&req, "show_nsfw") != "on"; template(SubredditTemplate { sub, posts, @@ -128,6 +131,7 @@ pub async fn community(req: Request) -> Result, String> { redirect_url, is_filtered: false, all_posts_filtered, + any_posts_hidden_nsfw, }) } Err(msg) => match msg.as_str() { diff --git a/src/user.rs b/src/user.rs index a5a11d0..27c6c06 100644 --- a/src/user.rs +++ b/src/user.rs @@ -2,10 +2,10 @@ use crate::client::json; use crate::esc; use crate::server::RequestExt; -use crate::utils::{error, filter_posts, format_url, get_filters, param, template, Post, Preferences, User}; +use crate::utils::{error, filter_posts, format_url, get_filters, param, setting, template, Post, Preferences, User}; use askama::Template; use hyper::{Body, Request, Response}; -use time::{OffsetDateTime, macros::format_description}; +use time::{macros::format_description, OffsetDateTime}; // STRUCTS #[derive(Template)] @@ -25,6 +25,8 @@ struct UserTemplate { /// Whether all fetched posts are filtered (to differentiate between no posts fetched in the first place, /// and all fetched posts being filtered). all_posts_filtered: bool, + /// Whether any posts were hidden because they are NSFW (and user has disabled show NSFW) + any_posts_hidden_nsfw: bool, } // FUNCTIONS @@ -59,13 +61,14 @@ pub async fn profile(req: Request) -> Result, String> { redirect_url, is_filtered: true, all_posts_filtered: false, + any_posts_hidden_nsfw: false, }) } else { // Request user posts/comments from Reddit match Post::fetch(&path, false).await { Ok((mut posts, after)) => { let all_posts_filtered = filter_posts(&mut posts, &filters); - + let any_posts_hidden_nsfw = posts.iter().any(|p| p.flags.nsfw) && setting(&req, "show_nsfw") != "on"; template(UserTemplate { user, posts, @@ -77,6 +80,7 @@ pub async fn profile(req: Request) -> Result, String> { redirect_url, is_filtered: false, all_posts_filtered, + any_posts_hidden_nsfw, }) } // If there is an error show error page diff --git a/templates/search.html b/templates/search.html index 0218c35..f12191d 100644 --- a/templates/search.html +++ b/templates/search.html @@ -56,6 +56,11 @@ {% endif %} {% endif %} + + {% if any_posts_hidden_nsfw %} +
Some posts were hidden because they are NSFW. Enable "Show NSFW posts" in settings to view.
+ {% endif %} + {% if all_posts_filtered %}
(All content on this page has been filtered)
{% else if is_filtered %} diff --git a/templates/subreddit.html b/templates/subreddit.html index 61f78db..c626ba8 100644 --- a/templates/subreddit.html +++ b/templates/subreddit.html @@ -46,6 +46,10 @@ {% endif %} + {% if any_posts_hidden_nsfw %} +
Some posts were hidden because they are NSFW. Enable "Show NSFW posts" in settings to view.
+ {% endif %} + {% if all_posts_filtered %}
(All content on this page has been filtered)
{% else %} diff --git a/templates/user.html b/templates/user.html index 4c81596..2a4e9d9 100644 --- a/templates/user.html +++ b/templates/user.html @@ -32,6 +32,10 @@ + {% if any_posts_hidden_nsfw %} +
Some posts were hidden because they are NSFW. Enable "Show NSFW posts" in settings to view.
+ {% endif %} + {% if all_posts_filtered %}
(All content on this page has been filtered)
{% else %}