This control handles searching for a user on Twitch, and allows saving them to the database.
55 lines
1.8 KiB
GDScript
55 lines
1.8 KiB
GDScript
extends PanelContainer
|
|
|
|
signal dlg_closed()
|
|
signal users_updated()
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
%SearchUser.text_submitted.connect(_handle_search_user)
|
|
%SearchId.text_submitted.connect(_handle_search_id)
|
|
%SaveUser.pressed.connect(_handle_save_user)
|
|
%UpdateUser.pressed.connect(_handle_update_user)
|
|
%ClearUser.pressed.connect(%TwitchUserInfo.clear)
|
|
|
|
func _handle_search_user(user: String) -> void:
|
|
%TwitchUserInfo.show_busy()
|
|
var t_user := await Globals.twitcher.get_user(user)
|
|
if t_user == null:
|
|
%TwitchUserInfo.show_normal()
|
|
DisplayServer.dialog_show("Failed to find Twitch User", "Failed to find the Twitch user going by %s" % user, ["Ok"], dlg_closed.emit)
|
|
await dlg_closed
|
|
return
|
|
|
|
%TwitchUserInfo.populate_from_twitch_user(t_user)
|
|
|
|
func _handle_search_id(id: String) -> void:
|
|
%TwitchUserInfo.show_busy()
|
|
var t_user := await Globals.twitcher.get_user_by_id(id)
|
|
if t_user == null:
|
|
%TwitchUserInfo.show_normal()
|
|
DisplayServer.dialog_show("Failed to find Twitch User", "Unable to find a Twitch user with the associated id %s" % id, ["Ok"], dlg_closed.emit)
|
|
await dlg_closed
|
|
return
|
|
|
|
%TwitchUserInfo.populate_from_twitch_user(t_user)
|
|
|
|
func _handle_save_user() -> void:
|
|
var user: TwitchUser = %TwitchUserInfo.t_user
|
|
var chatter: Chatter = Globals.context.chatters.find_one(Condition.new().equal("twitch_id", user.id))
|
|
if chatter:
|
|
DisplayServer.dialog_show("Add Twitch User", "This user already exists in the database.", ["Ok"], dlg_closed.emit)
|
|
await dlg_closed
|
|
return
|
|
|
|
chatter = Chatter.new()
|
|
chatter.twitch_id = user.id
|
|
chatter.user = user
|
|
chatter.first_added = Time.get_unix_time_from_system()
|
|
chatter.first_seen = -1
|
|
chatter.last_seen = -1
|
|
Globals.context.chatters.append(chatter)
|
|
%TwitchUserInfo.clear()
|
|
users_updated.emit()
|
|
|
|
func _handle_update_user() -> void:
|
|
pass
|