Compare commits

...

3 Commits

Author SHA1 Message Date
6b59976fcf Fix #376 2021-12-27 23:16:01 -08:00
f9b3981448 Fix debug log in post.rs 2021-12-27 19:56:37 -08:00
db3196df5a Use Reveddit to show removed posts/comments. Closes #299 2021-12-27 19:40:35 -08:00
6 changed files with 22 additions and 9 deletions

2
Cargo.lock generated
View File

@ -572,7 +572,7 @@ checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
[[package]]
name = "libreddit"
version = "0.20.5"
version = "0.21.2"
dependencies = [
"askama",
"async-recursion",

View File

@ -3,7 +3,7 @@ name = "libreddit"
description = " Alternative private front-end to Reddit"
license = "AGPL-3.0"
repository = "https://github.com/spikecodes/libreddit"
version = "0.20.5"
version = "0.21.2"
authors = ["spikecodes <19519553+spikecodes@users.noreply.github.com>"]
edition = "2021"

View File

@ -97,12 +97,20 @@ async fn parse_post(json: &serde_json::Value) -> Post {
let awards: Awards = Awards::parse(&post["data"]["all_awardings"]);
let permalink = val(post, "permalink");
let body = if val(post, "removed_by_category") == "moderator" {
format!("<div class=\"md\"><p>[removed] — <a href=\"https://www.reveddit.com{}\">view removed post</a></p></div>", permalink)
} else {
rewrite_urls(&val(post, "selftext_html")).replace("\\", "")
};
// Build a post using data parsed from Reddit post API
Post {
id: val(post, "id"),
title: esc!(post, "title"),
community: val(post, "subreddit"),
body: rewrite_urls(&val(post, "selftext_html")).replace("\\", ""),
body,
author: Author {
name: val(post, "author"),
flair: Flair {
@ -117,7 +125,7 @@ async fn parse_post(json: &serde_json::Value) -> Post {
},
distinguished: val(post, "distinguished"),
},
permalink: val(post, "permalink"),
permalink,
score: format_num(score),
upvote_ratio: ratio as i64,
post_type,
@ -174,7 +182,6 @@ fn parse_comments(json: &serde_json::Value, post_link: &str, post_author: &str,
let edited = data["edited"].as_f64().map_or((String::new(), String::new()), time);
let score = data["score"].as_i64().unwrap_or(0);
let body = rewrite_urls(&val(&comment, "body_html"));
// If this comment contains replies, handle those too
let replies: Vec<Comment> = if data["replies"].is_object() {
@ -191,6 +198,12 @@ fn parse_comments(json: &serde_json::Value, post_link: &str, post_author: &str,
let id = val(&comment, "id");
let highlighted = id == highlighted_comment;
let body = if val(&comment, "author") == "[deleted]" && val(&comment, "body") == "[removed]" {
format!("<div class=\"md\"><p>[removed] — <a href=\"https://www.reveddit.com{}{}\">view removed comment</a></p></div>", post_link, id)
} else {
rewrite_urls(&val(&comment, "body_html")).to_string()
};
let author = Author {
name: val(&comment, "author"),
flair: Flair {

View File

@ -548,7 +548,7 @@ pub fn format_url(url: &str) -> String {
if url.is_empty() || url == "self" || url == "default" || url == "nsfw" || url == "spoiler" {
String::new()
} else {
Url::parse(url).map_or(String::new(), |parsed| {
Url::parse(url).map_or(url.to_string(), |parsed| {
let domain = parsed.domain().unwrap_or_default();
let capture = |regex: &str, format: &str, segments: i16| {

View File

@ -876,7 +876,7 @@ a.search_subreddit:hover {
#post_url {
color: var(--accent);
margin: 5px 15px;
margin: 5px 12px;
grid-area: post_media;
}
@ -903,7 +903,7 @@ a.search_subreddit:hover {
opacity: 0.5;
font-size: 14px;
grid-area: post_footer;
margin: 5px 20px 15px 15px;
margin: 5px 20px 15px 12px;
}
.post_comments {

View File

@ -56,7 +56,7 @@
{% endif %}
</p>
<p class="post_title">
<a href="{{ post.permalink }}">{{ post.title }}</a>
{{ post.title }}
{% if post.flair.flair_parts.len() > 0 %}
<a href="/r/{{ post.community }}/search?q=flair_name%3A%22{{ post.flair.text }}%22&restrict_sr=on"
class="post_flair"