using System; using System.Threading.Tasks; using Kill.Managers; using Kill.Network; using UnityEngine; using UnityEngine.UI; using Kill.UI.Pages; using Kill.UI.Components; namespace Kill.UI.Pages { /// /// 设备重命名页面 /// public class RenamePage : MonoBehaviour { [Header("输入组件")] public InputField nameInput; [Header("按钮")] public Button confirmBtn; public Button cancelBtn; private string currentName; private Action onConfirmCallback; private int type = 0;//0设备重命名 1用户名重命名 /// /// 初始化页面 /// /// 当前名称 /// 确认回调,返回名称 /// 类型 0 重命名设备 1 用户名重命名 public void Init(string name, Action onConfirm, int type = 0) { currentName = name; onConfirmCallback = onConfirm; this.type = type; // 初始化输入框 if (nameInput != null) { nameInput.text = name; } // 绑定按钮事件 if (confirmBtn != null) confirmBtn.onClick.AddListener(OnConfirmClick); if (cancelBtn != null) cancelBtn.onClick.AddListener(OnCancelClick); // 注册返回事件 UIManager.Instance.RegisterBackAction(Back); } /// /// 点击确认按钮 /// private async void OnConfirmClick() { string newName = nameInput != null ? nameInput.text.Trim() : ""; // 如果为空或名称没有变化,直接返回 if (string.IsNullOrEmpty(newName) || newName == currentName) { Back(); return; } // 显示加载中 LoadingUI.Show(); if (type == 0) { // 调用服务器接口修改设备名称 UpdateDeviceNameAsync(newName); } else if (type == 1) { // 调用服务器接口修改用户名 UpdateUserNameAsync(newName); } } /// /// 调用服务器接口更新设备名称 /// private async void UpdateDeviceNameAsync(string newName) { try { // 构建请求数据 var requestData = new DeviceNameRequest { device_name = newName, user_id = DataManager.Instance.userInfo.id, device_sn = DataManager.Instance.selectedDevice.ble_mac }; // 发送PUT请求 var response = await HttpRequestManager.Instance.Put("/api/v1/device/name", requestData); ResponseCodeHandler.HandleResponse(response, onSuccess: (data) => { LoadingUI.Hide(); // 回调新名称 onConfirmCallback?.Invoke(newName); Back(); }, onError: null ); } catch (Exception ex) { Debug.LogError($"更新设备名称失败: {ex.Message}"); } } private async void UpdateUserNameAsync(string newName) { try { // 构建请求数据 var requestData = new UserNameRequest { username = newName }; // 发送PUT请求 var response = await HttpRequestManager.Instance.Put("/api/v1/user/username", requestData); ResponseCodeHandler.HandleResponse(response, onSuccess: (data) => { LoadingUI.Hide(); // 回调新名称 onConfirmCallback?.Invoke(newName); Back(); }, onError: null ); } catch (Exception ex) { Debug.LogError($"更新设备名称失败: {ex.Message}"); } } /// /// 点击取消按钮 /// private void OnCancelClick() { Back(); } /// /// 返回/关闭页面 /// private void Back() { UIManager.Instance.ClearBackAction(); Destroy(gameObject); } private void OnDestroy() { // 移除事件监听 if (confirmBtn != null) confirmBtn.onClick.RemoveListener(OnConfirmClick); if (cancelBtn != null) cancelBtn.onClick.RemoveListener(OnCancelClick); } } /// /// 设备名称请求数据 /// [Serializable] public class DeviceNameRequest { public string device_name; public string user_id; public string device_sn; } /// /// 更新用户名请求数据 /// [Serializable] public class UserNameRequest { public string username; } }