mirror of
https://github.com/thegatesbrowser/thegates.git
synced 2025-08-23 17:17:31 -04:00
68 lines
2 KiB
GDScript
68 lines
2 KiB
GDScript
extends AnalyticsSender
|
|
class_name AnalyticsSenderGate
|
|
|
|
@export var gate_events: GateEvents
|
|
|
|
var gate_open_tick: int
|
|
var gate_load_tick: int
|
|
var gate_url: String
|
|
|
|
|
|
func start() -> void:
|
|
super.start()
|
|
|
|
gate_events.search.connect(send_search)
|
|
gate_events.open_gate.connect(send_gate_open)
|
|
gate_events.gate_loaded.connect(func(_gate): send_gate_load())
|
|
gate_events.first_frame.connect(send_gate_start)
|
|
gate_events.exit_gate.connect(send_gate_exit)
|
|
|
|
# Send latest exit event
|
|
var json: String = DataSaver.get_string("analytics", "send_gate_exit")
|
|
if json.is_empty(): return
|
|
DataSaver.set_value("analytics", "send_gate_exit", "")
|
|
analytics.send_event(JSON.parse_string(json))
|
|
|
|
|
|
func send_search(query: String) -> void:
|
|
send_gate_exit()
|
|
|
|
analytics.send_event(AnalyticsEvents.search(query))
|
|
|
|
|
|
func send_gate_open(url: String) -> void:
|
|
send_gate_exit()
|
|
|
|
gate_url = url
|
|
gate_open_tick = Time.get_ticks_msec()
|
|
analytics.send_event(AnalyticsEvents.gate_open(url))
|
|
|
|
|
|
func send_gate_load() -> void:
|
|
var download_time = Analytics.get_delta_sec_from_tick(gate_open_tick)
|
|
gate_load_tick = Time.get_ticks_msec()
|
|
analytics.send_event(AnalyticsEvents.gate_load(gate_url, download_time))
|
|
Debug.logclr("Download time: %.3f" % [download_time], Color.AQUAMARINE)
|
|
|
|
|
|
func send_gate_start() -> void:
|
|
var bootup_time = Analytics.get_delta_sec_from_tick(gate_load_tick)
|
|
analytics.send_event(AnalyticsEvents.gate_start(gate_url, bootup_time))
|
|
Debug.logclr("Bootup time: %.3f" % [bootup_time], Color.AQUAMARINE)
|
|
|
|
|
|
func send_gate_exit() -> void:
|
|
if gate_url.is_empty(): return
|
|
|
|
var time_spent = Analytics.get_delta_sec_from_tick(gate_open_tick)
|
|
analytics.send_event(AnalyticsEvents.gate_exit(gate_url, time_spent))
|
|
gate_url = ""
|
|
|
|
|
|
func _exit_tree() -> void:
|
|
if gate_url.is_empty(): return
|
|
|
|
# Save to send on open
|
|
var time_spent = Analytics.get_delta_sec_from_tick(gate_open_tick)
|
|
var event = AnalyticsEvents.gate_exit(gate_url, time_spent)
|
|
DataSaver.set_value("analytics", "send_gate_exit", JSON.stringify(event))
|