using System.Collections;
using System.Collections.Generic;
using BackEnd;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class LoginUI : MonoBehaviour {
    [SerializeField] private CharacterSelectUI characterSelectUI;
    
    [SerializeField] private TMP_InputField idPInputField;
    [SerializeField] private TMP_InputField pwInputField;

    [SerializeField] private Button loginButton;
    [SerializeField] private Button signUpButton;
    [SerializeField] private Button autoLoginButton;


    private void Awake() {
        loginButton.onClick.RemoveAllListeners();
        loginButton.onClick.AddListener(() => {
            LoadingUI.Instance.OpenUI();
            Backend.MultiCharacter.Account.LoginAccount(idPInputField.text, pwInputField.text, callback => {
                LoadingUI.Instance.CloseUI();
                
                if (callback.IsSuccess()) {
                    Next();
                } else {
                    AlertUI.Instance.Alert(callback);
                }
            });
        });
        
        signUpButton.onClick.RemoveAllListeners();
        signUpButton.onClick.AddListener(() => {
            LoadingUI.Instance.OpenUI();

            Backend.MultiCharacter.Account.CreateAccount(idPInputField.text, pwInputField.text, callback => {
                LoadingUI.Instance.CloseUI();

                if (callback.IsSuccess()) {
                    Next();
                } else {
                    AlertUI.Instance.Alert(callback);
                }
            });
        });
        
        autoLoginButton.onClick.RemoveAllListeners();
        autoLoginButton.onClick.AddListener(() => {
            LoadingUI.Instance.OpenUI();

            Backend.MultiCharacter.Account.AutoLoginAccount(callback => {
                LoadingUI.Instance.CloseUI();

                if (callback.IsSuccess()) {
                    Next();
                } else {
                    AlertUI.Instance.Alert(callback);
                }
            });
        }); 
    }
    
    private void Next() {
        SceneManager.LoadScene("CharacterSelectScene");
    }
}
