Fix global RPC data parsing in BackendService

- Resolved massive bug where api_rpc_async returned raw payload strings instead of the parsed 'data' Dictionary expected by every system (Gacha, Mail, Leaderboard, Admin Panel, etc.)
- Restored Admin Panel's _rpc helper to use the standard result.get('data') format now that BackendService correctly supplies it.
This commit is contained in:
2026-06-22 17:45:58 +08:00
parent 396507ef4f
commit 948a99cf90
2 changed files with 11 additions and 10 deletions
+10 -1
View File
@@ -121,9 +121,18 @@ func api_rpc_async(rpc_id: String, payload: String = "{}") -> Dictionary:
} }
# Success # Success
var payload_str: String = result.payload if result.payload != null else "{}"
if payload_str.is_empty():
payload_str = "{}"
var parsed_data = JSON.parse_string(payload_str)
if parsed_data == null:
parsed_data = {}
return { return {
"success": true, "success": true,
"payload": result.payload "payload": payload_str,
"data": parsed_data
} }
return { "success": false, "error": ErrorCode.NETWORK_ERROR, "message": "Max retries exceeded" } return { "success": false, "error": ErrorCode.NETWORK_ERROR, "message": "Max retries exceeded" }
+1 -9
View File
@@ -301,15 +301,7 @@ func _rpc(rpc_name: String, payload: Dictionary) -> Dictionary:
var err: String = str(result.get("message", "Unknown error")) var err: String = str(result.get("message", "Unknown error"))
_set_status(err, CLR_STATUS_ERR) _set_status(err, CLR_STATUS_ERR)
return {"error": err} return {"error": err}
return result.get("data", {})
var payload_str: String = result.get("payload", "{}")
if payload_str.is_empty():
payload_str = "{}"
var parsed = JSON.parse_string(payload_str)
if typeof(parsed) == TYPE_DICTIONARY:
return parsed
return {}
func _set_status(msg: String, color: Color = CLR_DIM) -> void: func _set_status(msg: String, color: Color = CLR_DIM) -> void:
status_label.text = msg status_label.text = msg