diff --git a/scripts/ui/login_screen.gd b/scripts/ui/login_screen.gd
index e738762..d997fea 100644
--- a/scripts/ui/login_screen.gd
+++ b/scripts/ui/login_screen.gd
@@ -3,6 +3,7 @@ extends Control
const Brand := preload("res://scripts/ui/medmind_style.gd")
const EndpointConfig := preload("res://scripts/autoload/api_endpoint_config.gd")
const AUTH_BASE := "https://pauth.ranaze.com/api/Auth"
+const STEAM_AUTH_STORAGE_KEY := "ranaze_steam_auth_url"
var main: Control
var auth_base_url := AUTH_BASE
@@ -606,7 +607,10 @@ func _on_reset_confirmed(result: int, code: int, _headers: PackedStringArray, bo
func _start_steam() -> void:
if OS.has_feature("web"):
- var popup_result: Variant = JavaScriptBridge.eval("window.ranazeSteamWindow = window.open('about:blank', 'ranaze_steam'); window.ranazeSteamWindow !== null;", true)
+ var popup_result: Variant = JavaScriptBridge.eval(
+ "window.localStorage.removeItem('%s'); window.ranazeSteamWindow = window.open('about:blank', 'ranaze_steam'); if (window.ranazeSteamWindow) { var ranazeSteamWaitingWindow = window.ranazeSteamWindow; ranazeSteamWaitingWindow.document.title = 'RanaZe Steam sign in'; ranazeSteamWaitingWindow.document.body.innerHTML = 'Opening Steam sign in...This window will continue to Steam.
'; ranazeSteamWaitingWindow.setInterval(function () { var steamAuthUrl = ranazeSteamWaitingWindow.localStorage.getItem('%s'); if (steamAuthUrl) { var steamLogin = ranazeSteamWaitingWindow.document.getElementById('ranaze-steam-login'); steamLogin.innerHTML = 'Steam sign in is ready.
Continue to Steam
'; ranazeSteamWaitingWindow.document.getElementById('ranaze-steam-link').href = steamAuthUrl; ranazeSteamWaitingWindow.localStorage.removeItem('%s'); ranazeSteamWaitingWindow.location.replace(steamAuthUrl); } }, 150); } window.ranazeSteamWindow !== null;" % [STEAM_AUTH_STORAGE_KEY, STEAM_AUTH_STORAGE_KEY, STEAM_AUTH_STORAGE_KEY],
+ true
+ )
steam_popup_opened = bool(popup_result)
if not steam_popup_opened:
return _show_error("Steam sign in needs a popup. Allow popups for this site, then try again.")
@@ -625,7 +629,10 @@ func _on_steam_started(result: int, code: int, _headers: PackedStringArray, body
_close_steam_popup()
return _show_error("Steam returned an invalid sign-in response.")
if OS.has_feature("web"):
- JavaScriptBridge.eval("if (window.ranazeSteamWindow && !window.ranazeSteamWindow.closed) { window.ranazeSteamWindow.location.href = %s; }" % JSON.stringify(auth_url), true)
+ JavaScriptBridge.eval(
+ "var ranazeSteamAuthUrl = %s; window.localStorage.setItem('%s', ranazeSteamAuthUrl); if (window.ranazeSteamWindow && !window.ranazeSteamWindow.closed) { window.ranazeSteamWindow.focus(); } else { var ranazeSteamPopup = window.open(ranazeSteamAuthUrl, 'ranaze_steam'); if (ranazeSteamPopup) { window.ranazeSteamWindow = ranazeSteamPopup; ranazeSteamPopup.focus(); } else { window.location.assign(ranazeSteamAuthUrl); } }" % [JSON.stringify(auth_url), STEAM_AUTH_STORAGE_KEY],
+ true
+ )
else:
OS.shell_open(auth_url)
steam_poll_deadline_msec = Time.get_ticks_msec() + 300000
@@ -703,7 +710,7 @@ func _reset_steam_flow() -> void:
func _close_steam_popup() -> void:
if OS.has_feature("web") and steam_popup_opened:
- JavaScriptBridge.eval("if (window.ranazeSteamWindow && !window.ranazeSteamWindow.closed) { window.ranazeSteamWindow.close(); } window.ranazeSteamWindow = null;", true)
+ JavaScriptBridge.eval("window.localStorage.removeItem('%s'); if (window.ranazeSteamWindow && !window.ranazeSteamWindow.closed) { window.ranazeSteamWindow.close(); } window.ranazeSteamWindow = null;" % STEAM_AUTH_STORAGE_KEY, true)
steam_popup_opened = false