using Newtonsoft.Json.Linq; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; public class AccountRegister : MonoBehaviour { [SerializeField] private TMP_Text registerPanelStatusText; [SerializeField] private TMP_InputField registerUsernameInput; [SerializeField] private TMP_InputField registerEmailInput; [SerializeField] private TMP_InputField registerRetypeEmailInput; [SerializeField] private TMP_InputField registerPasswordInput; [SerializeField] private TMP_InputField registerRetypePasswordInput; [SerializeField] private TMP_InputField registerVerifyCodeInput; [SerializeField] private Button registerBackButton; [SerializeField] private Button registerSubmitButton; void Awake() { registerUsernameInput.onSelect.AddListener((_) => registerUsernameInput.caretPosition = registerUsernameInput.text.Length); registerEmailInput.onSelect.AddListener((_) => registerEmailInput.caretPosition = registerEmailInput.text.Length); registerRetypeEmailInput.onSelect.AddListener((_) => registerRetypeEmailInput.caretPosition = registerRetypeEmailInput.text.Length); registerPasswordInput.onSelect.AddListener((_) => registerPasswordInput.caretPosition = registerPasswordInput.text.Length); registerRetypePasswordInput.onSelect.AddListener((_) => registerRetypePasswordInput.caretPosition = registerRetypePasswordInput.text.Length); registerVerifyCodeInput.onSelect.AddListener((_) => registerVerifyCodeInput.caretPosition = registerVerifyCodeInput.text.Length); registerBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(1)); registerSubmitButton.onClick.AddListener(() => SubmitRegister()); } void OnEnable() { registerUsernameInput.text = ""; registerEmailInput.text = ""; registerRetypeEmailInput.text = ""; registerPasswordInput.text = ""; registerRetypePasswordInput.text = ""; registerVerifyCodeInput.text = ""; registerPanelStatusText.text = ""; } async void SubmitRegister() { if ( registerUsernameInput.text == string.Empty || registerEmailInput.text == string.Empty || registerRetypeEmailInput.text == string.Empty || registerPasswordInput.text == string.Empty || registerRetypePasswordInput.text == string.Empty || registerVerifyCodeInput.text == string.Empty ) { Tools.UpdateStatusText(registerPanelStatusText, "All input fields must be filled", Color.red); return; } if (registerEmailInput.text != registerRetypeEmailInput.text) { Tools.UpdateStatusText(registerPanelStatusText, "Emails don't match", Color.red); return; } if (registerPasswordInput.text != registerRetypePasswordInput.text) { Tools.UpdateStatusText(registerPanelStatusText, "Passwords don't match", Color.red); return; } registerBackButton.interactable = false; registerSubmitButton.interactable = false; WWWForm dataForm = new(); dataForm.AddField("username", registerUsernameInput.text); dataForm.AddField("email", registerEmailInput.text); dataForm.AddField("password", registerPasswordInput.text); dataForm.AddField("verifyCode", registerVerifyCodeInput.text); registerVerifyCodeInput.text = ""; using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_REGISTER_ENDPOINT, dataForm); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); await request.SendWebRequest(); if (request.downloadHandler.text == null) { registerBackButton.interactable = true; registerSubmitButton.interactable = true; Tools.UpdateStatusText(registerPanelStatusText, "Failed to make HTTP request", Color.red); return; } var jsonResponse = JObject.Parse(request.downloadHandler.text); if ((bool)jsonResponse["success"]) { AccountHandler.instance.SwitchPanel(2); } else { Tools.UpdateStatusText(registerPanelStatusText, (string)jsonResponse["message"], Color.red); } registerBackButton.interactable = true; registerSubmitButton.interactable = true; } }