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