using Newtonsoft.Json.Linq; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; public class AccountChangePassword : MonoBehaviour { [SerializeField] private TMP_Text changePasswordStatusText; [SerializeField] private TMP_InputField changePasswordNewPasswordInput; [SerializeField] private TMP_InputField changePasswordRetypeNewPasswordInput; [SerializeField] private Button changePasswordBackButton; [SerializeField] private Button changePasswordSubmitButton; void Awake() { changePasswordBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0)); changePasswordSubmitButton.onClick.AddListener(() => ChangePassword()); } void OnEnable() { changePasswordNewPasswordInput.text = ""; changePasswordRetypeNewPasswordInput.text = ""; changePasswordStatusText.text = ""; } async void ChangePassword() { if (changePasswordNewPasswordInput.text != changePasswordRetypeNewPasswordInput.text) { Tools.UpdateStatusText(changePasswordStatusText, "Passwords do not match", Color.red); return; } changePasswordBackButton.interactable = false; changePasswordSubmitButton.interactable = false; WWWForm dataForm = new(); dataForm.AddField("newPassword", changePasswordNewPasswordInput.text); using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_CHANGE_PASSWORD_ENDPOINT, dataForm); request.SetRequestHeader("Authorization", BazookaManager.Instance.GetAccountSession()); request.SetRequestHeader("Requester", "BerryDashClient"); request.SetRequestHeader("ClientVersion", Application.version); request.SetRequestHeader("ClientPlatform", Application.platform.ToString()); await request.SendWebRequest(); if (request.downloadHandler.text == null) { changePasswordBackButton.interactable = true; changePasswordSubmitButton.interactable = true; Tools.UpdateStatusText(changePasswordStatusText, "Failed to make HTTP request", Color.red); return; } var jsonResponse = JObject.Parse(request.downloadHandler.text); if ((bool)jsonResponse["success"]) { BazookaManager.Instance.SetAccountSession((string)jsonResponse["token"]); AccountHandler.instance.SwitchPanel(0); Tools.UpdateStatusText(AccountHandler.instance.accountLoggedIn.loggedInText, "Password changed successfully", Color.green); } else { Tools.UpdateStatusText(changePasswordStatusText, (string)jsonResponse["message"], Color.red); } changePasswordBackButton.interactable = true; changePasswordSubmitButton.interactable = true; } }