153 lines
4.1 KiB
C#
Raw Normal View History

2026-05-18 08:42:33 +08:00
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
{
/// <summary>
/// 设备重命名页面
/// </summary>
public class RenamePage : MonoBehaviour
{
[Header("输入组件")]
public InputField nameInput;
[Header("按钮")]
public Button confirmBtn;
public Button cancelBtn;
private string currentDeviceName;
private Action<string> onConfirmCallback;
/// <summary>
/// 初始化页面
/// </summary>
/// <param name="deviceName">当前设备名称</param>
/// <param name="onConfirm">确认回调,返回新设备名称</param>
public void Init(string deviceName, Action<string> onConfirm)
{
this.currentDeviceName = deviceName;
this.onConfirmCallback = onConfirm;
// 初始化输入框
if (nameInput != null)
{
nameInput.text = deviceName;
}
// 绑定按钮事件
if (confirmBtn != null)
confirmBtn.onClick.AddListener(OnConfirmClick);
if (cancelBtn != null)
cancelBtn.onClick.AddListener(OnCancelClick);
// 注册返回事件
UIManager.Instance.RegisterBackAction(Back);
}
/// <summary>
/// 点击确认按钮
/// </summary>
private async void OnConfirmClick()
{
string newName = nameInput != null ? nameInput.text.Trim() : "";
// 如果为空或名称没有变化,直接返回
if (string.IsNullOrEmpty(newName) || newName == currentDeviceName)
{
Back();
return;
}
// 显示加载中
LoadingUI.Show();
// 调用服务器接口修改设备名称
UpdateDeviceNameAsync(newName);
}
/// <summary>
/// 调用服务器接口更新设备名称
/// </summary>
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.device_sn
};
// 发送PUT请求
var response = await HttpRequestManager.Instance.Put<string>("/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}");
}
}
/// <summary>
/// 点击取消按钮
/// </summary>
private void OnCancelClick()
{
Back();
}
/// <summary>
/// 返回/关闭页面
/// </summary>
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);
}
}
/// <summary>
/// 设备名称请求数据
/// </summary>
[Serializable]
public class DeviceNameRequest
{
public string device_name;
public string user_id;
public string device_sn;
}
}