Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
db3196df5a | |||
b3d4f6f91c | |||
45b875b85d | |||
992d7889c4 | |||
3188f9d8e7 |
4
.github/workflows/rust.yml
vendored
4
.github/workflows/rust.yml
vendored
@ -22,6 +22,10 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: cargo build --release
|
||||
|
||||
- name: Publish to crates.io
|
||||
continue-on-error: true
|
||||
run: cargo publish --no-verify --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
||||
|
||||
- uses: actions/upload-artifact@v2.2.1
|
||||
name: Upload a Build Artifact
|
||||
|
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -572,7 +572,7 @@ checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
|
||||
|
||||
[[package]]
|
||||
name = "libreddit"
|
||||
version = "0.20.4"
|
||||
version = "0.21.0"
|
||||
dependencies = [
|
||||
"askama",
|
||||
"async-recursion",
|
||||
|
@ -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.4"
|
||||
version = "0.21.0"
|
||||
authors = ["spikecodes <19519553+spikecodes@users.noreply.github.com>"]
|
||||
edition = "2021"
|
||||
|
||||
|
21
src/post.rs
21
src/post.rs
@ -97,12 +97,22 @@ 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("\\", "")
|
||||
};
|
||||
|
||||
dbg!(val(post, "permalink"));
|
||||
|
||||
// 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 +127,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 +184,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 +200,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 {
|
||||
|
@ -596,7 +596,7 @@ pub fn format_url(url: &str) -> String {
|
||||
"external-preview.redd.it" => capture(r"https://external\-preview\.redd\.it/(.*)", "/preview/external-pre/", 1),
|
||||
"styles.redditmedia.com" => capture(r"https://styles\.redditmedia\.com/(.*)", "/style/", 1),
|
||||
"www.redditstatic.com" => capture(r"https://www\.redditstatic\.com/(.*)", "/static/", 1),
|
||||
_ => String::new(),
|
||||
_ => url.to_string(),
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -488,7 +488,7 @@ aside {
|
||||
/* Sorting and Search */
|
||||
|
||||
select, #search, #sort_options, #inside, #searchbox > *, #sort_submit {
|
||||
height: 40px;
|
||||
height: 38px;
|
||||
}
|
||||
|
||||
.search_label {
|
||||
@ -505,7 +505,7 @@ select {
|
||||
|
||||
select, #search {
|
||||
border: none;
|
||||
padding: 0 15px;
|
||||
padding: 0 10px;
|
||||
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
@ -593,6 +593,7 @@ button.submit:hover > svg { stroke: var(--accent); }
|
||||
|
||||
#sort_options, footer > a {
|
||||
border-radius: 5px;
|
||||
align-items: center;
|
||||
box-shadow: var(--shadow);
|
||||
background: var(--outside);
|
||||
display: flex;
|
||||
@ -719,7 +720,7 @@ a.search_subreddit:hover {
|
||||
}
|
||||
|
||||
.post_score {
|
||||
padding-top: 16px;
|
||||
padding-top: 19px;
|
||||
padding-left: 12px;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
@ -1180,12 +1181,10 @@ summary.comment_data {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
|
||||
.prefs {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20px;
|
||||
background: var(--post);
|
||||
border-radius: 5px;
|
||||
@ -1198,11 +1197,19 @@ summary.comment_data {
|
||||
width: 100%;
|
||||
height: 35px;
|
||||
align-items: center;
|
||||
margin-top: 10px;
|
||||
margin-top: 7px;
|
||||
}
|
||||
|
||||
.prefs > p {
|
||||
.prefs legend {
|
||||
font-weight: 500;
|
||||
border-bottom: 1px solid var(--highlighted);
|
||||
font-size: 18px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.prefs legend:not(:first-child) {
|
||||
padding-top: 10px;
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.prefs select {
|
||||
|
@ -11,14 +11,14 @@
|
||||
<div id="settings">
|
||||
<form action="/settings" method="POST">
|
||||
<div class="prefs">
|
||||
<p>Appearance</p>
|
||||
<legend>Appearance</legend>
|
||||
<div id="theme">
|
||||
<label for="theme">Theme:</label>
|
||||
<select name="theme">
|
||||
{% call utils::options(prefs.theme, ["system", "light", "dark", "black", "dracula", "nord", "laserwave", "violet", "gold", "rosebox"], "system") %}
|
||||
</select>
|
||||
</div>
|
||||
<p>Interface</p>
|
||||
<legend>Interface</legend>
|
||||
<div id="front_page">
|
||||
<label for="front_page">Front page:</label>
|
||||
<select name="front_page">
|
||||
@ -36,7 +36,7 @@
|
||||
<input type="hidden" value="off" name="wide">
|
||||
<input type="checkbox" name="wide" {% if prefs.wide == "on" %}checked{% endif %}>
|
||||
</div>
|
||||
<p>Content</p>
|
||||
<legend>Content</legend>
|
||||
<div id="post_sort">
|
||||
<label for="post_sort" title="Applies only to subreddit feeds">Default subreddit post sort:</label>
|
||||
<select name="post_sort">
|
||||
@ -79,7 +79,7 @@
|
||||
</form>
|
||||
{% if prefs.subscriptions.len() > 0 %}
|
||||
<div class="prefs" id="settings_subs">
|
||||
<p>Subscribed Feeds</p>
|
||||
<legend>Subscribed Feeds</legend>
|
||||
{% for sub in prefs.subscriptions %}
|
||||
<div>
|
||||
{% let feed -%}
|
||||
@ -94,7 +94,7 @@
|
||||
{% endif %}
|
||||
{% if !prefs.filters.is_empty() %}
|
||||
<div class="prefs" id="settings_filters">
|
||||
<p>Filtered Feeds</p>
|
||||
<legend>Filtered Feeds</legend>
|
||||
{% for sub in prefs.filters %}
|
||||
<div>
|
||||
{% let feed -%}
|
||||
|
Reference in New Issue
Block a user