Allow bypassing nsfw gate for posts

On instances that are not sfw-only, the nsfw gate for posts can now be
bypassed.
This commit is contained in:
gmnsii 2023-03-22 23:18:35 -07:00
parent e25622dac2
commit e046144bf3
6 changed files with 35 additions and 18 deletions

View file

@ -56,15 +56,15 @@ pub async fn item(req: Request<Body>) -> Result<Response<Body>, String> {
// Parse the JSON into Post and Comment structs
let post = parse_post(&response[0]["data"]["children"][0]).await;
let req_url = req.uri().to_string();
// Return landing page if this post if this Reddit deems this post
// NSFW, but we have also disabled the display of NSFW content
// or if the instance is SFW-only.
if post.nsfw && (setting(&req, "show_nsfw") != "on" || crate::utils::sfw_only()) {
return Ok(nsfw_landing(req).await.unwrap_or_default());
if post.nsfw && crate::utils::should_be_nsfw_gated(&req, &req_url) {
return Ok(nsfw_landing(req, req_url).await.unwrap_or_default());
}
let comments = parse_comments(&response[1], &post.permalink, &post.author.name, highlighted_comment, &get_filters(&req), &req);
let url = req.uri().to_string();
// Use the Post and Comment structs to generate a website to show users
template(PostTemplate {
@ -73,7 +73,7 @@ pub async fn item(req: Request<Body>) -> Result<Response<Body>, String> {
sort,
prefs: Preferences::new(&req),
single_thread,
url,
url: req_url,
})
}
// If the Reddit API returns an error, exit and send error page to user
@ -190,3 +190,4 @@ fn parse_comments(json: &serde_json::Value, post_link: &str, post_author: &str,
})
.collect()
}