mirror of
https://github.com/thegatesbrowser/thegates.git
synced 2025-08-23 08:17:34 -04:00
53 lines
1.5 KiB
GDScript
53 lines
1.5 KiB
GDScript
extends Node
|
|
|
|
const KEY_URL = "url"
|
|
const KEY_TITLE = "title"
|
|
const KEY_DESCRIPTION = "description"
|
|
const KEY_ICON = "icon"
|
|
const KEY_IS_SPECIAL = "is_special"
|
|
|
|
@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
|
|
|
|
await featured_gates_request()
|
|
Debug.logclr("======== Featured gates ========", 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:
|
|
Debug.logr(gate["url"])
|
|
star_gate(gate)
|
|
|
|
|
|
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)
|
|
|
|
|
|
func star_gate(gate_d: Dictionary) -> void:
|
|
var gate = Gate.create(gate_d[KEY_URL], gate_d[KEY_TITLE], gate_d[KEY_DESCRIPTION], gate_d[KEY_ICON], "")
|
|
gate.is_special = gate_d[KEY_IS_SPECIAL]
|
|
gate.featured = true
|
|
bookmarks.star(gate)
|
|
|
|
var icon = await FileDownloader.download(gate.icon_url)
|
|
bookmarks.update_icon(gate.url, icon)
|