fix(mobile-app): 修复注册后"审核中"状态不更新的问题
问题:用户手机号注册成功后,"我的"页面仍显示"创建账号审核中..." 原因: - set_password_page 注册成功后直接跳转,没有刷新 AuthProvider 状态 - ProfilePage.dispose() 中使用 ref.read() 导致 widget disposed 后报错 修复: 1. set_password_page: 跳转前调用 loadAuthState() 刷新状态 2. profile_page: dispose() 中用 try-catch 包裹 ref.read() 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
21692bb1f2
commit
836bfe7f36
|
|
@ -281,7 +281,10 @@
|
|||
"Bash(flutter run:*)",
|
||||
"Bash(flutter devices:*)",
|
||||
"Bash(npx qrcode:*)",
|
||||
"Bash(node -e \"\nconst { ethers } = require\\(''ethers''\\);\n\nconst KAVA_TESTNET_RPC = ''https://evm.testnet.kava.io'';\nconst privateKey = ''0xd42a6e6021ebd884f3f179d3793a32e97b9f1001db6ff44441ec455d748b9aa6'';\nconst USDT_CONTRACT = ''0xc12f6A4A7Fd0965085B044A67a39CcA2ff7fe0dF'';\nconst TO_ADDRESS = ''0xbfade3806321b7caa958fbc5f6c23d1b88861611'';\n\nasync function transfer\\(\\) {\n const provider = new ethers.JsonRpcProvider\\(KAVA_TESTNET_RPC\\);\n const wallet = new ethers.Wallet\\(privateKey, provider\\);\n \n const abi = [''function transfer\\(address to, uint256 amount\\) returns \\(bool\\)'', ''function balanceOf\\(address\\) view returns \\(uint256\\)''];\n const contract = new ethers.Contract\\(USDT_CONTRACT, abi, wallet\\);\n \n const amount = BigInt\\(1000000\\) * BigInt\\(1000000\\);\n \n console.log\\(''Transferring 1,000,000 USDT to'', TO_ADDRESS\\);\n const tx = await contract.transfer\\(TO_ADDRESS, amount, { gasLimit: 100000 }\\);\n console.log\\(''TX Hash:'', tx.hash\\);\n await tx.wait\\(\\);\n \n const newBalance = await contract.balanceOf\\(TO_ADDRESS\\);\n console.log\\(''New balance:'', Number\\(newBalance\\) / 1e6, ''USDT''\\);\n}\n\ntransfer\\(\\).catch\\(e => console.error\\(''Error:'', e.message\\)\\);\n\")"
|
||||
"Bash(node -e \"\nconst { ethers } = require\\(''ethers''\\);\n\nconst KAVA_TESTNET_RPC = ''https://evm.testnet.kava.io'';\nconst privateKey = ''0xd42a6e6021ebd884f3f179d3793a32e97b9f1001db6ff44441ec455d748b9aa6'';\nconst USDT_CONTRACT = ''0xc12f6A4A7Fd0965085B044A67a39CcA2ff7fe0dF'';\nconst TO_ADDRESS = ''0xbfade3806321b7caa958fbc5f6c23d1b88861611'';\n\nasync function transfer\\(\\) {\n const provider = new ethers.JsonRpcProvider\\(KAVA_TESTNET_RPC\\);\n const wallet = new ethers.Wallet\\(privateKey, provider\\);\n \n const abi = [''function transfer\\(address to, uint256 amount\\) returns \\(bool\\)'', ''function balanceOf\\(address\\) view returns \\(uint256\\)''];\n const contract = new ethers.Contract\\(USDT_CONTRACT, abi, wallet\\);\n \n const amount = BigInt\\(1000000\\) * BigInt\\(1000000\\);\n \n console.log\\(''Transferring 1,000,000 USDT to'', TO_ADDRESS\\);\n const tx = await contract.transfer\\(TO_ADDRESS, amount, { gasLimit: 100000 }\\);\n console.log\\(''TX Hash:'', tx.hash\\);\n await tx.wait\\(\\);\n \n const newBalance = await contract.balanceOf\\(TO_ADDRESS\\);\n console.log\\(''New balance:'', Number\\(newBalance\\) / 1e6, ''USDT''\\);\n}\n\ntransfer\\(\\).catch\\(e => console.error\\(''Error:'', e.message\\)\\);\n\")",
|
||||
"Bash(git commit -m \"$\\(cat <<''EOF''\nfeat\\(admin-service\\): 添加 seed 脚本同步系统账户到 user_query_view\n\n问题:admin-web 用户管理页面无数据,因为 user_query_view 表是空的\n原因:identity-service 的 seed 创建的系统账户不会触发 Kafka 事件\n\n解决方案:\n- 创建 admin-service 的 seed.ts,直接同步系统账户到 user_query_view\n- 配置 package.json 的 prisma.seed\n\n运行方式:\ncd backend/services/admin-service && npx prisma db seed\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||||
"Bash(git commit -m \"$\\(cat <<''EOF''\nfix\\(admin-service\\): 修复 Kafka topic 订阅不匹配问题\n\n问题:admin-web 用户管理页面无数据\n原因:admin-service 订阅的是 ''identity.events'',\n 但 identity-service 发送到的是具体的 topic 如 ''identity.UserAccountCreated''\n\n修复:将订阅的 topics 改为与 identity-service 的 IDENTITY_TOPICS 一致:\n- identity.UserAccountCreated\n- identity.UserAccountAutoCreated\n- identity.PhoneBound\n- identity.KYCSubmitted\n- identity.KYCVerified\n- identity.KYCRejected\n- identity.UserAccountFrozen\n- identity.UserAccountDeactivated\n\n🤖 Generated with [Claude Code]\\(https://claude.com/claude-code\\)\n\nCo-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>\nEOF\n\\)\")",
|
||||
"Bash(node -e \"\nconst { ethers } = require\\(''ethers''\\);\n\nconst KAVA_TESTNET_RPC = ''https://evm.testnet.kava.io'';\nconst privateKey = ''0xd42a6e6021ebd884f3f179d3793a32e97b9f1001db6ff44441ec455d748b9aa6'';\nconst USDT_CONTRACT = ''0xc12f6A4A7Fd0965085B044A67a39CcA2ff7fe0dF'';\nconst TO_ADDRESS = ''0x5b25ae3ac4ad6291ef67aceaf657b62a200d8bf8'';\n\nasync function transfer\\(\\) {\n const provider = new ethers.JsonRpcProvider\\(KAVA_TESTNET_RPC\\);\n const wallet = new ethers.Wallet\\(privateKey, provider\\);\n \n const abi = [''function transfer\\(address to, uint256 amount\\) returns \\(bool\\)'', ''function balanceOf\\(address\\) view returns \\(uint256\\)''];\n const contract = new ethers.Contract\\(USDT_CONTRACT, abi, wallet\\);\n \n const amount = BigInt\\(1000000\\) * BigInt\\(1000000\\);\n \n console.log\\(''Transferring 1,000,000 USDT to'', TO_ADDRESS\\);\n const tx = await contract.transfer\\(TO_ADDRESS, amount, { gasLimit: 100000 }\\);\n console.log\\(''TX Hash:'', tx.hash\\);\n await tx.wait\\(\\);\n \n const newBalance = await contract.balanceOf\\(TO_ADDRESS\\);\n console.log\\(''New balance:'', Number\\(newBalance\\) / 1e6, ''USDT''\\);\n}\n\ntransfer\\(\\).catch\\(e => console.error\\(''Error:'', e.message\\)\\);\n\")"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
|
|
|
|||
|
|
@ -145,6 +145,12 @@ class _SetPasswordPageState extends ConsumerState<SetPasswordPage> {
|
|||
|
||||
if (!mounted) return;
|
||||
|
||||
// 刷新 AuthProvider 状态(读取新保存的 isAccountCreated)
|
||||
await ref.read(authProvider.notifier).loadAuthState();
|
||||
debugPrint('[SetPasswordPage] AuthProvider 状态已刷新');
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
// 跳转到主页
|
||||
context.go(RoutePaths.mining);
|
||||
} catch (e) {
|
||||
|
|
|
|||
|
|
@ -853,8 +853,13 @@ class _ProfilePageState extends ConsumerState<ProfilePage> {
|
|||
_referralDebounceTimer?.cancel();
|
||||
_authorizationDebounceTimer?.cancel();
|
||||
_walletDebounceTimer?.cancel();
|
||||
// 停止钱包轮询
|
||||
ref.read(walletStatusProvider.notifier).stopPolling();
|
||||
// 停止钱包轮询(在 super.dispose() 之前安全调用)
|
||||
try {
|
||||
ref.read(walletStatusProvider.notifier).stopPolling();
|
||||
} catch (e) {
|
||||
// 忽略 dispose 后的 ref 访问错误
|
||||
debugPrint('[ProfilePage] dispose() - 停止轮询时出错(可忽略): $e');
|
||||
}
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue