diff options
| author | Omar Roth <omarroth@protonmail.com> | 2019-06-04 19:58:56 -0500 |
|---|---|---|
| committer | Omar Roth <omarroth@protonmail.com> | 2019-06-04 20:13:58 -0500 |
| commit | 352e409a6e5df40bb62b00e4053c4294390dd5a3 (patch) | |
| tree | ffbe332df498a5dd621109fe11f4d01fabf71e2a /src | |
| parent | d6ec441c8ef418ebb8be625e4ee7738cdda62597 (diff) | |
| download | invidious-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.cr | 2 | ||||
| -rw-r--r-- | src/invidious/helpers/utils.cr | 18 |
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 |
