summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOmar Roth <omarroth@protonmail.com>2019-06-04 19:58:56 -0500
committerOmar Roth <omarroth@protonmail.com>2019-06-04 20:13:58 -0500
commit352e409a6e5df40bb62b00e4053c4294390dd5a3 (patch)
treeffbe332df498a5dd621109fe11f4d01fabf71e2a /src
parentd6ec441c8ef418ebb8be625e4ee7738cdda62597 (diff)
downloadinvidious-352e409a6e5df40bb62b00e4053c4294390dd5a3.tar.gz
invidious-352e409a6e5df40bb62b00e4053c4294390dd5a3.tar.bz2
invidious-352e409a6e5df40bb62b00e4053c4294390dd5a3.zip
Fix toggle_theme when visiting preferences with JS disabled
Diffstat (limited to 'src')
-rw-r--r--src/invidious.cr2
-rw-r--r--src/invidious/helpers/utils.cr18
2 files changed, 11 insertions, 9 deletions
diff --git a/src/invidious.cr b/src/invidious.cr
index 24dcaf7e..e8621b23 100644
--- a/src/invidious.cr
+++ b/src/invidious.cr
@@ -1487,7 +1487,7 @@ end
get "/toggle_theme" do |env|
locale = LOCALES[env.get("preferences").as(Preferences).locale]?
- referer = get_referer(env)
+ referer = get_referer(env, unroll: false)
redirect = env.params.query["redirect"]?
redirect ||= "true"
diff --git a/src/invidious/helpers/utils.cr b/src/invidious/helpers/utils.cr
index 9bdb6a7e..fcccb7f9 100644
--- a/src/invidious/helpers/utils.cr
+++ b/src/invidious/helpers/utils.cr
@@ -243,7 +243,7 @@ def make_host_url(config, kemal_config)
return "#{scheme}#{host}#{port}"
end
-def get_referer(env, fallback = "/")
+def get_referer(env, fallback = "/", unroll = true)
referer = env.params.query["referer"]?
referer ||= env.request.headers["referer"]?
referer ||= fallback
@@ -251,16 +251,18 @@ def get_referer(env, fallback = "/")
referer = URI.parse(referer)
# "Unroll" nested referrers
- loop do
- if referer.query
- params = HTTP::Params.parse(referer.query.not_nil!)
- if params["referer"]?
- referer = URI.parse(URI.unescape(params["referer"]))
+ if unroll
+ loop do
+ if referer.query
+ params = HTTP::Params.parse(referer.query.not_nil!)
+ if params["referer"]?
+ referer = URI.parse(URI.unescape(params["referer"]))
+ else
+ break
+ end
else
break
end
- else
- break
end
end