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