From df3d894947b9dd11d7927438c2f809d6204135e8 Mon Sep 17 00:00:00 2001 From: gmnsii Date: Wed, 22 Mar 2023 20:08:20 -0700 Subject: [PATCH 1/3] Add option to hide score Add the option to hide score for posts and comments in preferences. There is still however a blank margin where the score is supposed to be. --- README.md | 3 ++- app.json | 3 +++ src/config.rs | 5 +++++ src/instance_info.rs | 3 +++ src/settings.rs | 3 ++- src/utils.rs | 2 ++ templates/comment.html | 2 ++ templates/duplicates.html | 4 +++- templates/search.html | 2 ++ templates/settings.html | 7 ++++++- templates/user.html | 2 ++ templates/utils.html | 5 ++++- 12 files changed, 36 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ff825ed..e1df1ad 100644 --- a/README.md +++ b/README.md @@ -219,7 +219,7 @@ Assign a default value for each instance-specific setting by passing environment Assign a default value for each user-modifiable setting by passing environment variables to Libreddit in the format `LIBREDDIT_DEFAULT_{Y}`. Replace `{Y}` with the setting name (see list below) in capital letters. | Name | Possible values | Default value | -|-------------------------|-----------------------------------------------------------------------------------------------------|---------------| +|------------------------|-----------------------------------------------------------------------------------------------------|---------------| | `THEME` | `["system", "light", "dark", "black", "dracula", "nord", "laserwave", "violet", "gold", "rosebox", "gruvboxdark", "gruvboxlight"]` | `system` | | `FRONT_PAGE` | `["default", "popular", "all"]` | `default` | | `LAYOUT` | `["card", "clean", "compact"]` | `card` | @@ -233,6 +233,7 @@ Assign a default value for each user-modifiable setting by passing environment v | `AUTOPLAY_VIDEOS` | `["on", "off"]` | `off` | | `SUBSCRIPTIONS` | `+`-delimited list of subreddits (`sub1+sub2+sub3+...`) | _(none)_ | | `HIDE_AWARDS` | `["on", "off"]` | `off` +| `HIDE_SCORE` | `["on", "off"]` | `off` | `DISABLE_VISIT_REDDIT_CONFIRMATION` | `["on", "off"]` | `off` | You can also configure Libreddit with a configuration file. An example `libreddit.toml` can be found below: diff --git a/app.json b/app.json index b4e0f3d..fee713a 100644 --- a/app.json +++ b/app.json @@ -47,6 +47,9 @@ "LIBREDDIT_DEFAULT_HIDE_AWARDS": { "required": false }, + "LIBREDDIT_DEFAULT_HIDE_SCORE": { + "required": false + }, "LIBREDDIT_BANNER": { "required": false }, diff --git a/src/config.rs b/src/config.rs index b552504..5ece232 100644 --- a/src/config.rs +++ b/src/config.rs @@ -52,6 +52,9 @@ pub struct Config { #[serde(rename = "LIBREDDIT_DEFAULT_HIDE_AWARDS")] pub(crate) default_hide_awards: Option, + #[serde(rename = "LIBREDDIT_DEFAULT_HIDE_SCORE")] + pub(crate) default_hide_score: Option, + #[serde(rename = "LIBREDDIT_DEFAULT_SUBSCRIPTIONS")] pub(crate) default_subscriptions: Option, @@ -87,6 +90,7 @@ impl Config { default_use_hls: parse("LIBREDDIT_DEFAULT_USE_HLS"), default_hide_hls_notification: parse("LIBREDDIT_DEFAULT_HIDE_HLS"), default_hide_awards: parse("LIBREDDIT_DEFAULT_HIDE_AWARDS"), + default_hide_score: parse("LIBREDDIT_DEFAULT_HIDE_SCORE"), default_subscriptions: parse("LIBREDDIT_DEFAULT_SUBSCRIPTIONS"), default_disable_visit_reddit_confirmation: parse("LIBREDDIT_DEFAULT_DISABLE_VISIT_REDDIT_CONFIRMATION"), banner: parse("LIBREDDIT_BANNER"), @@ -108,6 +112,7 @@ fn get_setting_from_config(name: &str, config: &Config) -> Option { "LIBREDDIT_DEFAULT_HIDE_HLS_NOTIFICATION" => config.default_hide_hls_notification.clone(), "LIBREDDIT_DEFAULT_WIDE" => config.default_wide.clone(), "LIBREDDIT_DEFAULT_HIDE_AWARDS" => config.default_hide_awards.clone(), + "LIBREDDIT_DEFAULT_HIDE_SCORE" => config.default_hide_score.clone(), "LIBREDDIT_DEFAULT_SUBSCRIPTIONS" => config.default_subscriptions.clone(), "LIBREDDIT_DEFAULT_DISABLE_VISIT_REDDIT_CONFIRMATION" => config.default_disable_visit_reddit_confirmation.clone(), "LIBREDDIT_BANNER" => config.banner.clone(), diff --git a/src/instance_info.rs b/src/instance_info.rs index f61796c..4a8044f 100644 --- a/src/instance_info.rs +++ b/src/instance_info.rs @@ -129,6 +129,7 @@ impl InstanceInfo { container.add_table( Table::from([ ["Hide awards", &convert(&self.config.default_hide_awards)], + ["Hide score", &convert(&self.config.default_hide_score)], ["Theme", &convert(&self.config.default_theme)], ["Front page", &convert(&self.config.default_front_page)], ["Layout", &convert(&self.config.default_layout)], @@ -158,6 +159,7 @@ impl InstanceInfo { Config:\n Banner: {:?}\n Hide awards: {:?}\n + Hide score: {:?}\n Default theme: {:?}\n Default front page: {:?}\n Default layout: {:?}\n @@ -177,6 +179,7 @@ impl InstanceInfo { self.config.sfw_only, self.config.banner, self.config.default_hide_awards, + self.config.default_hide_score, self.config.default_theme, self.config.default_front_page, self.config.default_layout, diff --git a/src/settings.rs b/src/settings.rs index 3dd4e45..f0aa6e9 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -19,7 +19,7 @@ struct SettingsTemplate { // CONSTANTS -const PREFS: [&str; 13] = [ +const PREFS: [&str; 14] = [ "theme", "front_page", "layout", @@ -32,6 +32,7 @@ const PREFS: [&str; 13] = [ "hide_hls_notification", "autoplay_videos", "hide_awards", + "hide_score", "disable_visit_reddit_confirmation", ]; diff --git a/src/utils.rs b/src/utils.rs index e6cb2f7..ab79eb7 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -519,6 +519,7 @@ pub struct Preferences { pub subscriptions: Vec, pub filters: Vec, pub hide_awards: String, + pub hide_score: String, } #[derive(RustEmbed)] @@ -553,6 +554,7 @@ impl Preferences { subscriptions: setting(&req, "subscriptions").split('+').map(String::from).filter(|s| !s.is_empty()).collect(), filters: setting(&req, "filters").split('+').map(String::from).filter(|s| !s.is_empty()).collect(), hide_awards: setting(&req, "hide_awards"), + hide_score: setting(&req, "hide_score"), } } } diff --git a/templates/comment.html b/templates/comment.html index f3d0f27..22b3c4f 100644 --- a/templates/comment.html +++ b/templates/comment.html @@ -5,7 +5,9 @@ {% else if kind == "t1" %}
+ {% if prefs.hide_score != "on" %}

{{ score.0 }}

+ {% endif %}
diff --git a/templates/duplicates.html b/templates/duplicates.html index 4344325..cf70a90 100644 --- a/templates/duplicates.html +++ b/templates/duplicates.html @@ -82,8 +82,10 @@ {% endif %} {{ post.title }}{% if post.flags.nsfw %} NSFW{% endif %} - + + {% if prefs.hide_score != "on" %}
{{ post.score.0 }} Upvotes
+ {% endif %} diff --git a/templates/search.html b/templates/search.html index 4fc0c4d..3678c43 100644 --- a/templates/search.html +++ b/templates/search.html @@ -77,7 +77,9 @@ {% else %}
+ {% if prefs.hide_score != "on" %}

{{ post.score.0 }}

+ {% endif %}
diff --git a/templates/settings.html b/templates/settings.html index a7cc8dc..e70bfcd 100644 --- a/templates/settings.html +++ b/templates/settings.html @@ -90,6 +90,11 @@
+
+ + + +
@@ -132,7 +137,7 @@

Note: settings and subscriptions are saved in browser cookies. Clearing your cookies will reset them.


-

You can restore your current settings and subscriptions after clearing your cookies using this link.

+

You can restore your current settings and subscriptions after clearing your cookies using this link.

diff --git a/templates/user.html b/templates/user.html index a72cce0..e8f806c 100644 --- a/templates/user.html +++ b/templates/user.html @@ -52,7 +52,9 @@ {% else %}
+ {% if prefs.hide_score != "on" %}

{{ post.score.0 }}

+ {% endif %}
diff --git a/templates/utils.html b/templates/utils.html index 3fdd76d..1c52c59 100644 --- a/templates/utils.html +++ b/templates/utils.html @@ -147,7 +147,9 @@
{{ post.body|safe }}
+ {% if prefs.hide_score != "on" %}
{{ post.score.0 }} Upvotes
+ {% endif %}