using Newtonsoft.Json.Linq; using TMPro; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI; public class AccountChangeUsername : MonoBehaviour { [SerializeField] private TMP_Text changeUsernameStatusText; [SerializeField] private TMP_InputField changeUsernameNewUsernameInput; [SerializeField] private Button changeUsernameBackButton; [SerializeField] private Button changeUsernameSubmitButton; void Awake() { changeUsernameNewUsernameInput.onSelect.AddListener((_) => changeUsernameNewUsernameInput.caretPosition = changeUsernameNewUsernameInput.text.Length); changeUsernameBackButton.onClick.AddListener(() => AccountHandler.instance.SwitchPanel(0)); changeUsernameSubmitButton.onClick.AddListener(() => ChangeUsername()); } void OnEnable() { changeUsernameNewUsernameInput.text = ""; changeUsernameStatusText.text = ""; } async void ChangeUsername() { changeUsernameBackButton.interactable = false; changeUsernameSubmitButton.interactable = false; WWWForm dataForm = new(); dataForm.AddField("newUsername", changeUsernameNewUsernameInput.text); using UnityWebRequest request = UnityWebRequest.Post(Endpoints.ACCOUNT_CHANGE_USERNAME_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) { changeUsernameBackButton.interactable = true; changeUsernameSubmitButton.interactable = true; Tools.UpdateStatusText(changeUsernameStatusText, "Failed to make HTTP request", Color.red); return; } var jsonResponse = JObject.Parse(request.downloadHandler.text); if ((bool)jsonResponse["success"]) { BazookaManager.Instance.SetAccountName(changeUsernameNewUsernameInput.text); BazookaManager.Instance.SetAccountSession((string)jsonResponse["data"]); AccountHandler.instance.SwitchPanel(0); Tools.UpdateStatusText(AccountHandler.instance.accountLoggedIn.loggedInText, "Username changed successfully", Color.green); } else { Tools.UpdateStatusText(changeUsernameStatusText, (string)jsonResponse["message"], Color.red); } changeUsernameBackButton.interactable = true; changeUsernameSubmitButton.interactable = true; } }