fix(mobile-app): skip backup mnemonic page for MPC wallet mode
- Fix mnemonic parsing: empty string "" now correctly becomes empty list - MPC mode (no mnemonic) skips backup page and navigates directly to home - Apply fix to both initial load and polling logic 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
72c49ffe7a
commit
f1390a85c8
|
|
@ -41,7 +41,8 @@
|
||||||
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): update migration to TEXT avatar and remove province/city/address\n\n- Change avatar_url column from VARCHAR(500) to TEXT\n- Remove province_code, city_code, address columns from user_accounts\n- Remove idx_province_city index\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): update migration to TEXT avatar and remove province/city/address\n\n- Change avatar_url column from VARCHAR(500) to TEXT\n- Remove province_code, city_code, address columns from user_accounts\n- Remove idx_province_city index\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
||||||
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): remove address from updateProfile and fix deviceInfo type\n\n- Remove dto.address parameter from updateProfile controller\n- Remove address property from updateProfile service\n- Fix deviceInfo JSON serialization for Prisma InputJsonValue type\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): remove address from updateProfile and fix deviceInfo type\n\n- Remove dto.address parameter from updateProfile controller\n- Remove address property from updateProfile service\n- Fix deviceInfo JSON serialization for Prisma InputJsonValue type\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
||||||
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" checkout -- backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql)",
|
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" checkout -- backend/services/identity-service/prisma/migrations/20241204000000_init/migration.sql)",
|
||||||
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): add device_info columns to user_devices migration\n\n- Add device_info JSONB column for storing complete device info\n- Add platform, device_model, os_version, app_version columns\n- Add screen_width, screen_height, locale, timezone columns\n- Add idx_platform index\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")"
|
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(identity): add device_info columns to user_devices migration\n\n- Add device_info JSONB column for storing complete device info\n- Add platform, device_model, os_version, app_version columns\n- Add screen_width, screen_height, locale, timezone columns\n- Add idx_platform index\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
|
||||||
|
"Bash(git -C \"c:\\Users\\dong\\Desktop\\rwadurian\" commit -m \"$(cat <<''EOF''\nfix(mobile-app): fix API response parsing for auto-create and wallet\n\n- Extract ''data'' field from API response before parsing\n- Fix createAccount() to parse responseData[''data'']\n- Fix getWalletInfo() to parse responseData[''data'']\n- Resolves: type ''Null'' is not a subtype of type ''int'' in type cast\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")"
|
||||||
],
|
],
|
||||||
"deny": [],
|
"deny": [],
|
||||||
"ask": []
|
"ask": []
|
||||||
|
|
|
||||||
|
|
@ -89,14 +89,27 @@ class _BackupMnemonicPageState extends ConsumerState<BackupMnemonicPage> {
|
||||||
|
|
||||||
if (response.isReady) {
|
if (response.isReady) {
|
||||||
// 钱包已就绪
|
// 钱包已就绪
|
||||||
final wordCount = response.mnemonic?.split(' ').length ?? 0;
|
// 处理助记词:空字符串或null都视为无助记词(MPC模式)
|
||||||
|
final mnemonic = response.mnemonic?.trim() ?? '';
|
||||||
|
final words = mnemonic.isEmpty ? <String>[] : mnemonic.split(' ');
|
||||||
|
final wordCount = words.length;
|
||||||
debugPrint('[BackupMnemonicPage] _loadWalletInfo - 钱包就绪! 助记词数量: $wordCount');
|
debugPrint('[BackupMnemonicPage] _loadWalletInfo - 钱包就绪! 助记词数量: $wordCount');
|
||||||
debugPrint('[BackupMnemonicPage] _loadWalletInfo - KAVA: ${_maskAddress(response.walletAddresses?.kava)}');
|
debugPrint('[BackupMnemonicPage] _loadWalletInfo - KAVA: ${_maskAddress(response.walletAddresses?.kava)}');
|
||||||
debugPrint('[BackupMnemonicPage] _loadWalletInfo - DST: ${_maskAddress(response.walletAddresses?.dst)}');
|
debugPrint('[BackupMnemonicPage] _loadWalletInfo - DST: ${_maskAddress(response.walletAddresses?.dst)}');
|
||||||
debugPrint('[BackupMnemonicPage] _loadWalletInfo - BSC: ${_maskAddress(response.walletAddresses?.bsc)}');
|
debugPrint('[BackupMnemonicPage] _loadWalletInfo - BSC: ${_maskAddress(response.walletAddresses?.bsc)}');
|
||||||
|
|
||||||
|
// MPC模式:无助记词,直接跳转到主页
|
||||||
|
if (wordCount == 0) {
|
||||||
|
debugPrint('[BackupMnemonicPage] _loadWalletInfo - MPC模式,无助记词,跳转到主页');
|
||||||
|
if (mounted) {
|
||||||
|
context.go('/home');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_walletInfo = response;
|
_walletInfo = response;
|
||||||
_mnemonicWords = response.mnemonic?.split(' ') ?? [];
|
_mnemonicWords = words;
|
||||||
_kavaAddress = response.walletAddresses?.kava;
|
_kavaAddress = response.walletAddresses?.kava;
|
||||||
_dstAddress = response.walletAddresses?.dst;
|
_dstAddress = response.walletAddresses?.dst;
|
||||||
_bscAddress = response.walletAddresses?.bsc;
|
_bscAddress = response.walletAddresses?.bsc;
|
||||||
|
|
@ -197,11 +210,24 @@ class _BackupMnemonicPageState extends ConsumerState<BackupMnemonicPage> {
|
||||||
debugPrint('[BackupMnemonicPage] _startPolling - 钱包就绪! 停止轮询 (共轮询 $_pollCount 次)');
|
debugPrint('[BackupMnemonicPage] _startPolling - 钱包就绪! 停止轮询 (共轮询 $_pollCount 次)');
|
||||||
timer.cancel();
|
timer.cancel();
|
||||||
_stopCountdown();
|
_stopCountdown();
|
||||||
final wordCount = response.mnemonic?.split(' ').length ?? 0;
|
// 处理助记词:空字符串或null都视为无助记词(MPC模式)
|
||||||
|
final mnemonic = response.mnemonic?.trim() ?? '';
|
||||||
|
final words = mnemonic.isEmpty ? <String>[] : mnemonic.split(' ');
|
||||||
|
final wordCount = words.length;
|
||||||
debugPrint('[BackupMnemonicPage] _startPolling - 助记词数量: $wordCount');
|
debugPrint('[BackupMnemonicPage] _startPolling - 助记词数量: $wordCount');
|
||||||
|
|
||||||
|
// MPC模式:无助记词,直接跳转到主页
|
||||||
|
if (wordCount == 0) {
|
||||||
|
debugPrint('[BackupMnemonicPage] _startPolling - MPC模式,无助记词,跳转到主页');
|
||||||
|
if (mounted) {
|
||||||
|
context.go('/home');
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setState(() {
|
setState(() {
|
||||||
_walletInfo = response;
|
_walletInfo = response;
|
||||||
_mnemonicWords = response.mnemonic?.split(' ') ?? [];
|
_mnemonicWords = words;
|
||||||
_kavaAddress = response.walletAddresses?.kava;
|
_kavaAddress = response.walletAddresses?.kava;
|
||||||
_dstAddress = response.walletAddresses?.dst;
|
_dstAddress = response.walletAddresses?.dst;
|
||||||
_bscAddress = response.walletAddresses?.bsc;
|
_bscAddress = response.walletAddresses?.bsc;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue