pokepurple/addons/twitcher/editor/setup/page_authorization.gd
Mario Steele c11a4ebbc2 Initial Commit
Initial commit of Code Base.
2025-06-12 14:31:14 -05:00

101 lines
3.1 KiB
GDScript

@tool
extends Node
const TwitchEditorSettings = preload("res://addons/twitcher/editor/twitch_editor_settings.gd")
const TwitchTweens = preload("res://addons/twitcher/editor/twitch_tweens.gd")
const TWITCH_SERVICE = preload("res://addons/twitcher/twitch_service.tscn")
@onready var authorization_explaination: RichTextLabel = %AuthExplain
@onready var client_id: LineEdit = %ClientId
@onready var client_secret: LineEdit = %ClientSecret
@onready var redirect_url: LineEdit = %RedirectURL
@onready var oauth_setting_file_select: FileSelect = %OauthSettingFileSelect
@onready var token_file_select: FileSelect = %TokenFileSelect
@onready var to_documentation: Button = %ToDocumentation
@onready var o_auth_save: Button = %OAuthSave
@onready var test_response: Label = %TestResponse
var has_changes: bool:
set(val):
has_changes = val
changed.emit.call_deferred()
o_auth_save.text = o_auth_save.text.trim_suffix(" (unsaved changes)")
if has_changes: o_auth_save.text += " (unsaved changes)"
signal changed
func _ready() -> void:
authorization_explaination.meta_clicked.connect(_on_link_clicked)
redirect_url.text_changed.connect(_on_text_changed)
client_id.text_changed.connect(_on_text_changed)
client_secret.text_changed.connect(_on_text_changed)
to_documentation.pressed.connect(_on_to_documentation_pressed)
oauth_setting_file_select.file_selected.connect(_on_file_changed)
token_file_select.file_selected.connect(_on_file_changed)
o_auth_save.pressed.connect(_on_save)
_load_oauth_setting()
func _load_oauth_setting() -> void:
var setting: OAuthSetting = TwitchEditorSettings.editor_oauth_setting
client_id.text = setting.client_id
client_secret.text = setting.get_client_secret()
redirect_url.text = setting.redirect_url
func _on_link_clicked(link: Variant) -> void:
OS.shell_open(link)
func _on_text_changed(val: String) -> void:
reset_response_message()
var setting: OAuthSetting = TwitchEditorSettings.editor_oauth_setting
setting.client_id = client_id.text
setting.set_client_secret(client_secret.text)
setting.redirect_url = redirect_url.text
has_changes = true
func reset_response_message() -> void:
test_response.text = ""
func _on_file_changed() -> void:
has_changes = true
func is_auth_existing() -> bool:
return is_instance_valid(TwitchEditorSettings.editor_oauth_setting)
func _on_save() -> void:
TwitchEditorSettings.save_editor_oauth_setting()
TwitchEditorSettings.save_editor_oauth_token()
var setting_path = oauth_setting_file_select.path
var setting = TwitchEditorSettings.editor_oauth_setting.duplicate(true)
setting.take_over_path(setting_path)
ResourceSaver.save(setting, setting_path)
TwitchEditorSettings.game_oauth_setting = setting
var token_path = token_file_select.path
var token = TwitchEditorSettings.editor_oauth_token.duplicate()
token.take_over_path(token_path)
ResourceSaver.save(token, token_path)
TwitchEditorSettings.game_oauth_token = token
TwitchTweens.flash(o_auth_save, Color.GREEN)
ProjectSettings.save()
has_changes = false
func _on_to_documentation_pressed() -> void:
OS.shell_open("https://dev.twitch.tv/docs/authentication/")