From 8fa975a19e7058921110c70ac231c51c1429c638 Mon Sep 17 00:00:00 2001 From: hailin Date: Mon, 22 Dec 2025 02:03:34 -0800 Subject: [PATCH] =?UTF-8?q?fix(mobile-app):=20=E8=87=AA=E5=8A=A8=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20isAccountCreated=20=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:已注册用户重新安装 App 后,isAccountCreated 可能为 false, 导致"我的"页面显示"创建账号审核中..." 修复: 1. checkAuthStatus() 中检测到有 token 和 userSerialNum 但 isAccountCreated 为 false 时,自动修复为 true 2. 添加 loadAuthState() 方法(checkAuthStatus 的别名) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../presentation/providers/auth_provider.dart | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/frontend/mobile-app/lib/features/auth/presentation/providers/auth_provider.dart b/frontend/mobile-app/lib/features/auth/presentation/providers/auth_provider.dart index 80cf0e38..20675545 100644 --- a/frontend/mobile-app/lib/features/auth/presentation/providers/auth_provider.dart +++ b/frontend/mobile-app/lib/features/auth/presentation/providers/auth_provider.dart @@ -82,8 +82,18 @@ class AuthNotifier extends StateNotifier { final isFirstLaunch = isFirstLaunchStr == null || isFirstLaunchStr != 'false'; // 检查账号是否已创建 - final isAccountCreatedStr = await _secureStorage.read(key: StorageKeys.isAccountCreated); - final isAccountCreated = isAccountCreatedStr == 'true'; + var isAccountCreatedStr = await _secureStorage.read(key: StorageKeys.isAccountCreated); + var isAccountCreated = isAccountCreatedStr == 'true'; + + // 修复:如果有 token 和 userSerialNum,但 isAccountCreated 为 false,自动修复 + final accessToken = await _secureStorage.read(key: StorageKeys.accessToken); + final userSerialNum = await _secureStorage.read(key: StorageKeys.userSerialNum); + if (!isAccountCreated && accessToken != null && accessToken.isNotEmpty && + userSerialNum != null && userSerialNum.isNotEmpty) { + // 自动修复:设置 isAccountCreated = true + await _secureStorage.write(key: StorageKeys.isAccountCreated, value: 'true'); + isAccountCreated = true; + } // 检查钱包是否已就绪 final isWalletReadyStr = await _secureStorage.read(key: StorageKeys.isWalletReady); @@ -93,8 +103,8 @@ class AuthNotifier extends StateNotifier { final isMnemonicBackedUpStr = await _secureStorage.read(key: StorageKeys.isMnemonicBackedUp); final isMnemonicBackedUp = isMnemonicBackedUpStr == 'true'; - // 获取用户序列号和推荐码(用于跳转到备份页面) - final userSerialNum = await _secureStorage.read(key: StorageKeys.userSerialNum); + // 获取推荐码(用于跳转到备份页面) + // 注意:userSerialNum 已在上面读取过了 final referralCode = await _secureStorage.read(key: StorageKeys.referralCode); // 旧版兼容:检查旧的 walletAddress 字段 @@ -182,6 +192,12 @@ class AuthNotifier extends StateNotifier { await _secureStorage.deleteAll(); state = const AuthState(status: AuthStatus.unauthenticated); } + + /// 重新加载认证状态(checkAuthStatus 的别名) + /// 用于注册/登录成功后刷新状态 + Future loadAuthState() async { + await checkAuthStatus(); + } } final authProvider = StateNotifierProvider((ref) {