diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/invidious/helpers/helpers.cr | 1 | ||||
| -rw-r--r-- | src/invidious/routes/misc.cr | 7 | ||||
| -rw-r--r-- | src/invidious/routes/preferences.cr | 5 | ||||
| -rw-r--r-- | src/invidious/users.cr | 1 | ||||
| -rw-r--r-- | src/invidious/views/preferences.ecr | 7 |
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> |
