“虞渠成” 432b80dfa3 fix: 修复多处UI返回逻辑、优化扫码对焦与UI布局
1.  优化HomePage加载逻辑,修复加载弹窗重复显示问题
2.  重构蓝牙分享页、重命名页的返回事件绑定逻辑
3.  优化iOS/Android扫码对焦功能,支持多后置摄像头、软触发对焦
4.  调整扫码预览布局与参数,提升扫码识别率与适配性
5.  删除冗余的Android状态栏管理脚本与无用文件
6.  新增返回回调调试日志
2026-09-01 15:47:57 +08:00

216 lines
6.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 currentName;
private Action<string> onConfirmCallback;
private int type = 0;//0设备重命名 1用户名重命名
private string deviceMac;// 待重命名设备的蓝牙MAC为空时取当前选中设备
private Action closeMenuPageCallback;
/// <summary>
/// 初始化页面
/// </summary>
/// <param name="deviceName">当前名称</param>
/// <param name="onConfirm">确认回调,返回名称</param>
/// <param name="type">类型 0 重命名设备 1 用户名重命名</param>
/// <param name="deviceMac">设备蓝牙MAC重命名非选中设备时传入</param>
public void Init(string name, Action<string> onConfirm, int type = 0, string deviceMac = null)
{
closeMenuPageCallback=UIManager.Instance.GetBackAction();
currentName = name;
onConfirmCallback = onConfirm;
this.type = type;
this.deviceMac = deviceMac;
// 初始化输入框
if (nameInput != null)
{
nameInput.text = name;
}
// 绑定按钮事件
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 == currentName)
{
Back();
return;
}
// 显示加载中
LoadingUI.Show();
if (type == 0)
{
// 调用服务器接口修改设备名称
UpdateDeviceNameAsync(newName);
}
else if (type == 1)
{
// 调用服务器接口修改用户名
UpdateUserNameAsync(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 = string.IsNullOrEmpty(deviceMac)
? DataManager.Instance.selectedDevice.ble_mac
: deviceMac
};
// 发送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}");
}
}
private async void UpdateUserNameAsync(string newName)
{
try
{
// 构建请求数据
var requestData = new UserNameRequest
{
username = newName
};
// 发送PUT请求
var response = await HttpRequestManager.Instance.Put<string>("/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}");
}
}
/// <summary>
/// 点击取消按钮
/// </summary>
private void OnCancelClick()
{
Back();
}
/// <summary>
/// 返回/关闭页面
/// </summary>
private void Back()
{
if (closeMenuPageCallback != null)
{
UIManager.Instance.RegisterBackAction(closeMenuPageCallback);
}
else
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;
}
/// <summary>
/// 更新用户名请求数据
/// </summary>
[Serializable]
public class UserNameRequest
{
public string username;
}
}