From e5be40a3d0144ce13191ec6f517fa319068d54d3 Mon Sep 17 00:00:00 2001 From: Nordup Date: Wed, 10 Apr 2024 11:44:04 +0400 Subject: [PATCH] featured_gates_request --- project/scenes/app.tscn | 10 ++++---- project/scripts/api/featured_gates.gd | 26 ++++++++++++++++++++- project/scripts/resources/bookmarks.gd | 2 ++ project/scripts/ui/search/search_results.gd | 2 +- 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/project/scenes/app.tscn b/project/scenes/app.tscn index d8dda7d..6a840af 100644 --- a/project/scenes/app.tscn +++ b/project/scenes/app.tscn @@ -26,6 +26,11 @@ search_results = ExtResource("4_phjpd") world_scene = ExtResource("4_p75rl") scenes_root = NodePath("Menu/VBoxContainer/Body") +[node name="Debug" parent="." instance=ExtResource("7_3xeb8")] + +[node name="Window" parent="Debug" index="0"] +visible = false + [node name="BookmarkSaver" type="Node" parent="."] script = ExtResource("5_ev0ch") save_dir = "user://resources" @@ -62,11 +67,6 @@ script = ExtResource("15_c1fxl") api = ExtResource("10_04o5h") bookmarks = ExtResource("6_rupvx") -[node name="Debug" parent="." instance=ExtResource("7_3xeb8")] - -[node name="Window" parent="Debug" index="0"] -visible = false - [node name="Menu" parent="." instance=ExtResource("3_o1f7b")] [editable path="Debug"] diff --git a/project/scripts/api/featured_gates.gd b/project/scripts/api/featured_gates.gd index a1dd8ae..68be8ae 100644 --- a/project/scripts/api/featured_gates.gd +++ b/project/scripts/api/featured_gates.gd @@ -3,11 +3,35 @@ extends Node @export var api: ApiSettings @export var bookmarks: Bookmarks +var result_str: String = "{}" + func _ready() -> void: bookmarks.on_ready.connect(on_bookmarks_ready) + if bookmarks.is_ready: on_bookmarks_ready() func on_bookmarks_ready() -> void: if bookmarks.gates.size() > 0: return - # TODO: Get featured gates + + await featured_gates_request() + Debug.logclr("Featured gates requested", Color.LIGHT_SEA_GREEN) + + var gates = JSON.parse_string(result_str) + if gates == null or gates.is_empty(): + Debug.logclr("No featured gates found", Color.YELLOW) + return + + for gate in gates: + # TODO: download image and add to bookmarks + Debug.logr(gate["url"]) + + +func featured_gates_request() -> void: + var callback = func(_result, code, _headers, body): + if code == 200: + result_str = body.get_string_from_utf8() + else: Debug.logclr("Featured gates request failed. Code " + str(code), Color.RED) + + var err = await Backend.request(api.featured_gates, callback) + if err != HTTPRequest.RESULT_SUCCESS: Debug.logclr("Cannot send featured gates request", Color.RED) diff --git a/project/scripts/resources/bookmarks.gd b/project/scripts/resources/bookmarks.gd index e78eb7e..2ce738a 100644 --- a/project/scripts/resources/bookmarks.gd +++ b/project/scripts/resources/bookmarks.gd @@ -8,6 +8,7 @@ signal save_image(gate: Gate) @export var starred_gates: Array[Gate] +var is_ready: bool var gates = {} @@ -16,6 +17,7 @@ func ready() -> void: if gate == null or not Url.is_valid(gate.url): continue gates[gate.url] = gate + is_ready = true on_ready.emit() diff --git a/project/scripts/ui/search/search_results.gd b/project/scripts/ui/search/search_results.gd index cec6904..a5b0d9b 100644 --- a/project/scripts/ui/search/search_results.gd +++ b/project/scripts/ui/search/search_results.gd @@ -4,7 +4,7 @@ extends VBoxContainer @export var api: ApiSettings @export var result_scene: PackedScene -var result_str: String +var result_str: String = "{}" func _ready() -> void: