StreamOverlay/UI/Controls/search_twitch_user.gd

56 lines
1.8 KiB
GDScript3
Raw Normal View History

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