99 lines
No EOL
2.9 KiB
C#
99 lines
No EOL
2.9 KiB
C#
using System;
|
|
using System.Text.RegularExpressions;
|
|
using _Network.Auth;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace _Hub.Scripts.UI
|
|
{
|
|
public class LoginUI : MonoBehaviour
|
|
{
|
|
#region Variables
|
|
|
|
private const int _maxUsernameLength = 15;
|
|
private const int _maxPasswordLength = 15;
|
|
[SerializeField] private AuthButton loginButton;
|
|
[SerializeField] private AuthInputField usernameInputField;
|
|
[SerializeField] private AuthInputField passwordInputField;
|
|
private string _username = String.Empty;
|
|
private string _password = String.Empty;
|
|
|
|
#endregion
|
|
|
|
#region Unity
|
|
|
|
private void Start()
|
|
{
|
|
AddListeners();
|
|
}
|
|
|
|
private void AddListeners()
|
|
{
|
|
loginButton.Button.onClick.AddListener(OnLoginClick);
|
|
usernameInputField.InputField.onValueChanged.AddListener(UpdateUsername);
|
|
passwordInputField.InputField.onValueChanged.AddListener(UpdatePassword);
|
|
}
|
|
|
|
private void OnLoginClick()
|
|
{
|
|
}
|
|
|
|
private void UpdateUsername(string username)
|
|
{
|
|
_username = username;
|
|
Debug.Log("Username:" + username);
|
|
ValidateAndUpdateUI();
|
|
}
|
|
|
|
private void UpdatePassword(string password)
|
|
{
|
|
_password = password;
|
|
Debug.Log("Password:" + password);
|
|
ValidateAndUpdateUI();
|
|
}
|
|
|
|
private void ValidateAndUpdateUI()
|
|
{
|
|
var usernameRegex = Regex.Match(_username, "^[a-zA-Z0-9]+$");
|
|
var interactable = (!string.IsNullOrWhiteSpace(_username) && !string.IsNullOrWhiteSpace(_password) &&
|
|
(_maxUsernameLength >= _username.Length && _maxPasswordLength >= _password.Length) &&
|
|
usernameRegex.Success);
|
|
EnableLoginButton(interactable);
|
|
|
|
UpdateInputErrors(usernameRegex);
|
|
}
|
|
|
|
private void UpdateInputErrors(Match usernameRegex)
|
|
{
|
|
//Username
|
|
if (string.IsNullOrEmpty(_username))
|
|
{
|
|
usernameInputField.Error(false);
|
|
}
|
|
else
|
|
{
|
|
var usernameTooLong = _username.Length > _maxUsernameLength;
|
|
usernameInputField.Error(usernameTooLong || !usernameRegex.Success);
|
|
}
|
|
|
|
//Password
|
|
if (string.IsNullOrEmpty(_password))
|
|
{
|
|
passwordInputField.Error(false);
|
|
}
|
|
else
|
|
{
|
|
var passwordTooLong = _password.Length > _maxPasswordLength;
|
|
passwordInputField.Error(passwordTooLong);
|
|
}
|
|
}
|
|
|
|
private void EnableLoginButton(bool interactable)
|
|
{
|
|
loginButton.SetInteractable(interactable);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |