“虞渠成” 1500451aa8 feat: 添加账号注销功能,优化登录注册流程
1.  新增账号注销全流程功能,包括注销页面、验证码校验和注销接口调用
2.  优化邮箱注册校验逻辑,区分已设置密码和未设置密码的账号
3.  重构个人页面登出逻辑,统一登出处理流程
4.  更新多语言文案,补充注销相关提示文本
5.  调整个人信息页面布局,添加注销账号入口
2026-09-21 15:55:13 +08:00

150 lines
6.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using Kill.Managers;
using Kill.Network;
using Kill.UI.Components;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Pages
{
public class SelfPage : MonoBehaviour
{
public Button backButton;
public Button showQrCodeButton;
public Button showInfoButton;
public SelfInfoPage selfInfoPagePrefab;
public Button safetyTestButton;
public ChangeLanguagePage changeLanguagePagePrefab;
public Button languageSettingButton;
public Image avatarImage;
public Text nicknameText;
public Text emailText;
UserInfo userInfo;
public ShowImageText safeHighlightPagePrefab;
public ShowImageText statusPagePrefab;
public GameObject safetySettingPage;
public Button safetySettingButton;
async Task Start()
{
UIManager.Instance.RegisterBackAction(OnBack);
backButton.onClick.RemoveAllListeners();
backButton.onClick.AddListener(OnBack);
showQrCodeButton.onClick.RemoveAllListeners();
showQrCodeButton.onClick.AddListener(OnShowQrCode);
showInfoButton.onClick.RemoveAllListeners();
showInfoButton.onClick.AddListener(OnShowInfo);
safetyTestButton.onClick.RemoveAllListeners();
safetyTestButton.onClick.AddListener(OnSafetyTest);
languageSettingButton.onClick.RemoveAllListeners();
languageSettingButton.onClick.AddListener(OnChangeLanguage);
safetySettingButton.onClick.RemoveAllListeners();
safetySettingButton.onClick.AddListener(EnterSafetySettingPage);
signoutButton.onClick.RemoveAllListeners();
signoutButton.onClick.AddListener(ClickSignOut);
await RefreshAsync();
}
public void OnBack()
{
UIManager.Instance.OpenMainPage(UIManager.PageName.homePage);
}
public GameObject qrCodePanelPrefab;
public void OnShowQrCode()
{
GameObject qrCodePanel = Instantiate(qrCodePanelPrefab, transform);
qrCodePanel.GetComponent<SelfQrcodePage>().Init(userInfo);
}
public void OnShowInfo()
{
SelfInfoPage infoPage = Instantiate(selfInfoPagePrefab, transform);
infoPage.Init(userInfo);
}
public void OnSafetyTest()
{
UIManager.Instance.OpenPage(UIManager.PageName.safetylearningPage);
}
public void OnChangeLanguage()
{
ChangeLanguagePage languagePage = Instantiate(changeLanguagePagePrefab, transform);
}
public async Task RefreshAsync()
{
userInfo = DataManager.Instance.userInfo;
nicknameText.text = userInfo.username;
emailText.text = userInfo.email;
if (!string.IsNullOrEmpty(userInfo.avatar))
{
avatarImage.gameObject.SetActive(true);
await NetworkCtrl.Instance.LoadImageToUIImageAsync(userInfo.avatar, avatarImage);
avatarImage.transform.parent.GetComponent<Mask>().showMaskGraphic=false;
}
}
public void EnterSafePage()
{
ShowImageText safePage=Instantiate(safeHighlightPagePrefab,transform);
safePage.gameObject.SetActive(true);
safePage.Init(()=>{UIManager.Instance.RegisterBackAction(OnSafetySettingBack);});
}
public Button safetySettingBackButton;
public Button autoLockButton;
public GameObject autoLockSettingPanelPrefab;
public void EnterSafetySettingPage()
{
safetySettingPage.SetActive(true);
safetySettingBackButton.onClick.RemoveAllListeners();
safetySettingBackButton.onClick.AddListener(OnSafetySettingBack);
autoLockButton.onClick.RemoveAllListeners();
autoLockButton.onClick.AddListener(OnAutoLockSetting);
UIManager.Instance.RegisterBackAction(OnSafetySettingBack);
}
public void OnSafetySettingBack()
{
safetySettingPage.SetActive(false);
UIManager.Instance.RegisterBackAction(OnBack);
}
GameObject autoLockSettingPanel;
public void OnAutoLockSetting()
{
autoLockSettingPanel=Instantiate(autoLockSettingPanelPrefab,transform);
autoLockSettingPanel.gameObject.SetActive(true);
}
public void EnterStatusPage()
{
ShowImageText statusPage=Instantiate(statusPagePrefab,transform);
statusPage.gameObject.SetActive(true);
statusPage.Init(()=>{UIManager.Instance.RegisterBackAction(OnBack);});
}
public FAQPage fAQPagePrefab;
public void EnterFaqPage()
{
FAQPage fAQPage=Instantiate(fAQPagePrefab,transform);
fAQPage.gameObject.SetActive(true);
fAQPage.Init(()=>{UIManager.Instance.RegisterBackAction(OnBack);});
}
public DeviceTeachingPage[] deviceTeachingPagePrefabs;
public void EnterDeviceTeachingPage()
{
int type=(int)LanguageManager.Instance.languageType;
DeviceTeachingPage deviceTeachingPage=Instantiate(deviceTeachingPagePrefabs[type],transform);
deviceTeachingPage.gameObject.SetActive(true);
deviceTeachingPage.Init(()=>{UIManager.Instance.RegisterBackAction(OnBack);});
}
public Button signoutButton;
public WindowTipCtrl signoutTip;
public void ClickSignOut()
{
signoutTip.gameObject.SetActive(true);
signoutTip.Init(OnSignOut,()=>{signoutTip.gameObject.SetActive(false);});
}
public void OnSignOut()
{
// 清除用户数据
DataManager.Instance.ClearInfo();
// 返回登录页面
UIManager.Instance.OpenMainPage(UIManager.PageName.loginPage);
}
}
}