102 lines
3.1 KiB
GDScript3
102 lines
3.1 KiB
GDScript3
|
|
@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/")
|