summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2018-07-26 18:00:13 -0500
committerGitHub <noreply@github.com>2018-07-26 18:00:13 -0500
commit20ddd3c0252e6dad5d21791f10f9a20198270163 (patch)
tree6817b0fe8b3c65651fe5a288e7a76512b84cc2cb
parentcc047bb5e5a94ed21414d6e50cb31fae49c9e858 (diff)
parent8764b298adea2440ec586c63425c85acc14d7dd1 (diff)
downloadinvidious-20ddd3c0252e6dad5d21791f10f9a20198270163.tar.gz
invidious-20ddd3c0252e6dad5d21791f10f9a20198270163.tar.bz2
invidious-20ddd3c0252e6dad5d21791f10f9a20198270163.zip
Merge pull request #43 from omarroth/thin-mode
Add thin mode
-rw-r--r--src/invidious.cr5
-rw-r--r--src/invidious/helpers.cr19
-rw-r--r--src/invidious/views/components/subscription_video.ecr3
-rw-r--r--src/invidious/views/components/video.ecr3
-rw-r--r--src/invidious/views/preferences.ecr5
-rw-r--r--src/invidious/views/watch.ecr5
6 files changed, 33 insertions, 7 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index de247592..30e4e24b 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -1363,6 +1363,10 @@ post "/preferences" do |env|
dark_mode ||= "off"
dark_mode = dark_mode == "on"
+ thin_mode = env.params.body["thin_mode"]?.try &.as(String)
+ thin_mode ||= "off"
+ thin_mode = thin_mode == "on"
+
max_results = env.params.body["max_results"]?.try &.as(String).to_i
max_results ||= 40
@@ -1380,6 +1384,7 @@ post "/preferences" do |env|
"quality" => quality,
"volume" => volume,
"dark_mode" => dark_mode,
+ "thin_mode" => thin_mode,
"max_results" => max_results,
"sort" => sort,
"latest_only" => latest_only,
diff --git a/src/invidious/helpers.cr b/src/invidious/helpers.cr
index 38283b7d..fb7c573b 100644
--- a/src/invidious/helpers.cr
+++ b/src/invidious/helpers.cr
@@ -24,6 +24,7 @@ DEFAULT_USER_PREFERENCES = Preferences.from_json({
"quality" => "hd720",
"volume" => 100,
"dark_mode" => false,
+ "thin_mode " => false,
"max_results" => 40,
"sort" => "published",
"latest_only" => false,
@@ -148,14 +149,20 @@ class User
})
end
+# TODO: Migrate preferences so this will not be nilable
class Preferences
JSON.mapping({
- video_loop: Bool,
- autoplay: Bool,
- speed: Float32,
- quality: String,
- volume: Int32,
- dark_mode: Bool,
+ video_loop: Bool,
+ autoplay: Bool,
+ speed: Float32,
+ quality: String,
+ volume: Int32,
+ dark_mode: Bool,
+ thin_mode: {
+ type: Bool,
+ nilable: true,
+ default: false,
+ },
max_results: Int32,
sort: String,
latest_only: Bool,
diff --git a/src/invidious/views/components/subscription_video.ecr b/src/invidious/views/components/subscription_video.ecr
index 377f51cb..f1ad4bb3 100644
--- a/src/invidious/views/components/subscription_video.ecr
+++ b/src/invidious/views/components/subscription_video.ecr
@@ -1,7 +1,10 @@
<div class="pure-u-1 pure-u-md-1-4">
<div class="h-box">
<a style="width:100%;" href="/watch?v=<%= video.id %>">
+ <% if env.get?("user") && env.get("user").as(User).preferences.thin_mode %>
+ <% else %>
<img style="width:100%;" src="https://i.ytimg.com/vi/<%= video.id %>/mqdefault.jpg"/>
+ <% end %>
<p><%= video.title %></p>
</a>
<p>
diff --git a/src/invidious/views/components/video.ecr b/src/invidious/views/components/video.ecr
index 804080cc..d145270f 100644
--- a/src/invidious/views/components/video.ecr
+++ b/src/invidious/views/components/video.ecr
@@ -1,7 +1,10 @@
<div class="pure-u-1 pure-u-md-1-4">
<div class="h-box">
<a style="width:100%;" href="/watch?v=<%= video.id %>">
+ <% if env.get?("user") && env.get("user").as(User).preferences.thin_mode %>
+ <% else %>
<img style="width:100%;" src="https://i.ytimg.com/vi/<%= video.id %>/mqdefault.jpg"/>
+ <% end %>
<p><%= video.title %></p>
</a>
<p>
diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr
index 370dfc0f..50e8b0e9 100644
--- a/src/invidious/views/preferences.ecr
+++ b/src/invidious/views/preferences.ecr
@@ -53,6 +53,11 @@ function update_value(element) {
<input name="dark_mode" id="dark_mode" type="checkbox" <% if user.preferences.dark_mode %>checked<% end %>>
</div>
+ <div class="pure-control-group">
+ <label for="thin_mode">Thin mode: </label>
+ <input name="thin_mode" id="thin_mode" type="checkbox" <% if user.preferences.thin_mode %>checked<% end %>>
+ </div>
+
<legend>Subscription preferences</legend>
<div class="pure-control-group">
<label for="max_results">Number of videos shown in feed: </label>
diff --git a/src/invidious/views/watch.ecr b/src/invidious/views/watch.ecr
index ec286754..962c3235 100644
--- a/src/invidious/views/watch.ecr
+++ b/src/invidious/views/watch.ecr
@@ -280,7 +280,10 @@ String.prototype.supplant = function (o) {
<% rvs.each do |rv| %>
<% if rv.has_key?("id") %>
<a href="/watch?v=<%= rv["id"] %>">
- <img style="width:100%;" alt="thumbnail" src="<%= rv["iurlmq"] %>">
+ <% if preferences && preferences.thin_mode %>
+ <% else %>
+ <img style="width:100%;" src="<%= rv["iurlmq"] %>">
+ <% end %>
<p style="width:100%"><%= rv["title"] %></p>
<p>
<b style="width: 100%"><%= rv["author"] %></b>