miggor-StreamGraph/graph_node_renderer/twitch_setup_dialog.gd
Eroax 8896fed2f8 Added Handling for Invalid NoTwitch Credentials (#135)
Just a quick fix that implements handling for if your Twitch authorization is invalid by adding a new signal that gets emitted, No_Twitch.invalid_auth. Which is connected to a lambda in twitch_setup_dialog that asks for authorization and opens the browser if it's received. It's not *pretty*, but it solves the problem temporarily.

Reviewed-on: https://codeberg.org/StreamGraph/StreamGraph/pulls/135
Co-authored-by: Eroax <eroaxebusiness@duck.com>
Co-committed-by: Eroax <eroaxebusiness@duck.com>
2024-04-09 05:49:54 +00:00

61 lines
1.7 KiB
GDScript

# (c) 2023-present Eroax
# (c) 2023-present Yagich
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
extends ConfirmationDialog
class_name TwitchSetupDialog
func _ready():
%Authenticate.pressed.connect(authenticate_twitch)
%CopyURLButton.pressed.connect(copy_auth_link)
#confirmed.connect(connect_to_chat)
%Join_Chat.pressed.connect(connect_to_chat)
func authenticate_twitch():
# Temporary setup for loading credentials
var loaded_creds = Connections.load_credentials("twitch")
if loaded_creds != null:
Connections.twitch.token = loaded_creds.data.token
if loaded_creds.data.has("channel"):
%Default_Chat.text = loaded_creds.data.channel
Connections.twitch.cache_user_data()
# Binds invalid auth to call No_Twitch.authenticate_with_twitch, handles if the cache of auth is invalid.
Connections.twitch.invalid_auth.connect(func():
var url = Connections.twitch.authenticate_with_twitch(%Client_ID.text)
OS.shell_open(url)
)
connect_to_chat()
return
# Handles first authentication/invalid cached authentication.
Connections.twitch.token_received.connect(func(token):
Connections.save_credentials({"token" : token}, "twitch")
)
var url = Connections.twitch.authenticate_with_twitch(%Client_ID.text)
OS.shell_open(url)
func copy_auth_link():
var url = Connections.twitch.authenticate_with_twitch(%Client_ID.text)
DisplayServer.clipboard_set(url)
func connect_to_chat():
if not Connections.twitch.get("chat_socket") or Connections.twitch.chat_socket.get_ready_state() != WebSocketPeer.STATE_OPEN:
Connections.twitch.setup_chat_connection(%Default_Chat.text)
return
Connections.twitch.join_channel(%Default_Chat.text)