Fix Steam sign in navigation on web
This commit is contained in:
@@ -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 = '<main id=\"ranaze-steam-login\" style=\"font:16px system-ui;padding:48px;color:#172033\"><strong>Opening Steam sign in...</strong><p>This window will continue to Steam.</p></main>'; ranazeSteamWaitingWindow.setInterval(function () { var steamAuthUrl = ranazeSteamWaitingWindow.localStorage.getItem('%s'); if (steamAuthUrl) { var steamLogin = ranazeSteamWaitingWindow.document.getElementById('ranaze-steam-login'); steamLogin.innerHTML = '<strong>Steam sign in is ready.</strong><p><a id=\"ranaze-steam-link\" style=\"color:#2563eb;font-weight:600\">Continue to Steam</a></p>'; 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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user