fix: stabilize web registration and asset loading
This commit is contained in:
@@ -17,8 +17,8 @@ const CONFIG_PATHS: Array[String] = [
|
||||
]
|
||||
|
||||
const DEFAULT_PROFILE: String = "production"
|
||||
const DEFAULT_API_BASE_URL: String = "https://whaletownend.xinghangee.icu"
|
||||
const DEFAULT_WS_URL: String = "wss://whaletownend.xinghangee.icu/game"
|
||||
const DEFAULT_API_BASE_URL: String = "https://whaletown.novamailio.com/api"
|
||||
const DEFAULT_WS_URL: String = "wss://whaletown.novamailio.com/game"
|
||||
|
||||
const API_BASE_URL_ENV_KEY: String = "WHALETOWN_API_BASE_URL"
|
||||
const CHAT_WS_URL_ENV_KEY: String = "WHALETOWN_CHAT_WS_URL"
|
||||
@@ -35,6 +35,10 @@ static func get_api_base_url() -> String:
|
||||
if not env_url.is_empty():
|
||||
return _trim_trailing_slash(env_url)
|
||||
|
||||
var browser_url := _get_browser_same_origin_url("/api")
|
||||
if not browser_url.is_empty():
|
||||
return browser_url
|
||||
|
||||
var network_config := _get_active_network_config()
|
||||
var url: String = str(network_config.get("api_base_url", "")).strip_edges()
|
||||
if not url.is_empty():
|
||||
@@ -51,6 +55,10 @@ static func get_chat_ws_url() -> String:
|
||||
if not env_url.is_empty():
|
||||
return env_url
|
||||
|
||||
var browser_url := _get_browser_same_origin_websocket_url("/game")
|
||||
if not browser_url.is_empty():
|
||||
return browser_url
|
||||
|
||||
var network_config := _get_active_network_config()
|
||||
var url: String = str(network_config.get("chat_ws_url", network_config.get("game_ws_url", ""))).strip_edges()
|
||||
if not url.is_empty():
|
||||
@@ -75,6 +83,10 @@ static func get_location_ws_url() -> String:
|
||||
if not game_env_url.is_empty():
|
||||
return game_env_url
|
||||
|
||||
var browser_url := _get_browser_same_origin_websocket_url("/game")
|
||||
if not browser_url.is_empty():
|
||||
return browser_url
|
||||
|
||||
var network_config := _get_active_network_config()
|
||||
var url: String = str(network_config.get("location_ws_url", network_config.get("game_ws_url", ""))).strip_edges()
|
||||
if not url.is_empty():
|
||||
@@ -154,7 +166,7 @@ static func _load_config() -> Dictionary:
|
||||
return {}
|
||||
|
||||
static func _get_browser_query_value(key: String) -> String:
|
||||
if OS.get_name() != "Web" or not OS.is_debug_build():
|
||||
if OS.get_name() != "Web":
|
||||
return ""
|
||||
|
||||
if not Engine.has_singleton("JavaScriptBridge"):
|
||||
@@ -168,6 +180,25 @@ static func _get_browser_query_value(key: String) -> String:
|
||||
var value: Variant = js_bridge.eval(script, true)
|
||||
return str(value).strip_edges()
|
||||
|
||||
static func _get_browser_same_origin_url(path: String) -> String:
|
||||
if OS.get_name() != "Web" or not Engine.has_singleton("JavaScriptBridge"):
|
||||
return ""
|
||||
var js_bridge: Object = Engine.get_singleton("JavaScriptBridge")
|
||||
if js_bridge == null:
|
||||
return ""
|
||||
var origin: String = str(js_bridge.eval("window.location.origin || ''", true)).strip_edges()
|
||||
if not origin.begins_with("http://") and not origin.begins_with("https://"):
|
||||
return ""
|
||||
return _trim_trailing_slash(origin) + path
|
||||
|
||||
static func _get_browser_same_origin_websocket_url(path: String) -> String:
|
||||
var http_url := _get_browser_same_origin_url("")
|
||||
if http_url.begins_with("https://"):
|
||||
return "wss://" + http_url.substr(8) + path
|
||||
if http_url.begins_with("http://"):
|
||||
return "ws://" + http_url.substr(7) + path
|
||||
return ""
|
||||
|
||||
static func _get_browser_url_override(key: String, allowed_schemes: Array[String]) -> String:
|
||||
var value := _get_browser_query_value(key)
|
||||
if value.is_empty():
|
||||
|
||||
Reference in New Issue
Block a user