mirror of
				https://github.com/iv-org/invidious.git
				synced 2025-10-31 04:32:02 +00:00 
			
		
		
		
	Fix toggle_theme when visiting preferences with JS disabled
This commit is contained in:
		| @@ -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" | ||||
|   | ||||
| @@ -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 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Omar Roth
					Omar Roth