summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsyeopite <syeopite@syeopite.dev>2021-05-15 20:08:33 -0700
committersyeopite <syeopite@syeopite.dev>2021-06-19 04:16:18 -0700
commitb63bebb519c448df6576c7bd124f2ce7681cc203 (patch)
tree08ff797828ce381e3c4b07c5a24daa0fb93a316e /src
parentcf72b34866e75677d854198a969f0263aed720c1 (diff)
downloadinvidious-b63bebb519c448df6576c7bd124f2ce7681cc203.tar.gz
invidious-b63bebb519c448df6576c7bd124f2ce7681cc203.tar.bz2
invidious-b63bebb519c448df6576c7bd124f2ce7681cc203.zip
Allow automatic instance redirect to be turned off
Instead the "switch invidious instance" link would bring users to redirect.invidious.io
Diffstat (limited to 'src')
-rw-r--r--src/invidious/helpers/helpers.cr1
-rw-r--r--src/invidious/routes/misc.cr7
-rw-r--r--src/invidious/routes/preferences.cr5
-rw-r--r--src/invidious/users.cr1
-rw-r--r--src/invidious/views/preferences.ecr7
5 files changed, 20 insertions, 1 deletions
diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr
index 1f92c4ce..b020d4fe 100644
--- a/src/invidious/helpers/helpers.cr
+++ b/src/invidious/helpers/helpers.cr
@@ -44,6 +44,7 @@ struct ConfigPreferences
property quality_dash : String = "auto"
property default_home : String? = "Popular"
property feed_menu : Array(String) = ["Popular", "Trending", "Subscriptions", "Playlists"]
+ property automatic_instance_redirect : Bool = true
property related_videos : Bool = true
property sort : String = "published"
property speed : Float32 = 1.0_f32
diff --git a/src/invidious/routes/misc.cr b/src/invidious/routes/misc.cr
index 13fc65bb..336f7e33 100644
--- a/src/invidious/routes/misc.cr
+++ b/src/invidious/routes/misc.cr
@@ -37,8 +37,13 @@ class Invidious::Routes::Misc < Invidious::Routes::BaseRoute
end
def cross_instance_redirect(env)
- instance_url = fetch_random_instance
referer = get_referer(env)
+
+ if !env.get("preferences").as(Preferences).automatic_instance_redirect
+ return env.redirect("https://redirect.invidious.io#{referer}")
+ end
+
+ instance_url = fetch_random_instance
env.redirect "https://#{instance_url}#{referer}"
end
end
diff --git a/src/invidious/routes/preferences.cr b/src/invidious/routes/preferences.cr
index f98c7a5e..20f68aea 100644
--- a/src/invidious/routes/preferences.cr
+++ b/src/invidious/routes/preferences.cr
@@ -92,6 +92,10 @@ class Invidious::Routes::PreferencesRoute < Invidious::Routes::BaseRoute
end
end
+ automatic_instance_redirect = env.params.body["automatic_instance_redirect"]?.try &.as(String)
+ automatic_instance_redirect ||= "off"
+ automatic_instance_redirect = automatic_instance_redirect == "on"
+
locale = env.params.body["locale"]?.try &.as(String)
locale ||= CONFIG.default_user_preferences.locale
@@ -141,6 +145,7 @@ class Invidious::Routes::PreferencesRoute < Invidious::Routes::BaseRoute
quality_dash: quality_dash,
default_home: default_home,
feed_menu: feed_menu,
+ automatic_instance_redirect: automatic_instance_redirect,
related_videos: related_videos,
sort: sort,
speed: speed,
diff --git a/src/invidious/users.cr b/src/invidious/users.cr
index d774ee12..98ef8792 100644
--- a/src/invidious/users.cr
+++ b/src/invidious/users.cr
@@ -36,6 +36,7 @@ struct Preferences
property annotations : Bool = CONFIG.default_user_preferences.annotations
property annotations_subscribed : Bool = CONFIG.default_user_preferences.annotations_subscribed
property autoplay : Bool = CONFIG.default_user_preferences.autoplay
+ property automatic_instance_redirect : Bool = CONFIG.default_user_preferences.automatic_instance_redirect
@[JSON::Field(converter: Preferences::StringToArray)]
@[YAML::Field(converter: Preferences::StringToArray)]
diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr
index 1e1e8cae..bc09ec79 100644
--- a/src/invidious/views/preferences.ecr
+++ b/src/invidious/views/preferences.ecr
@@ -176,6 +176,13 @@
<% end %>
</div>
+ <legend><%= translate(locale, "Miscellaneous preferences") %></legend>
+
+ <div class="pure-control-group">
+ <label for="automatic_instance_redirect"><%= translate(locale, "Automatically redirect to another Instance: ") %></label>
+ <input name="automatic_instance_redirect" id="automatic_instance_redirect" type="checkbox" <% if preferences.automatic_instance_redirect %>checked<% end %>>
+ </div>
+
<% if env.get? "user" %>
<legend><%= translate(locale, "Subscription preferences") %></legend>