Commit 07eaec7
chore: remove unused native wallet creation files (#2297)
* test: add entry point for testing onboarding flow
* feat: extending bridge for existing onboarding flow
* feat: onboarding ui
* feat: onboarding ui
* feat: onboarding ui entrypoint
* feat: onboarding ui entrypoint
* feat: bump wallet kit
* feat(android): add saveMnemonic bridge method for EOA accounts
- Saves mnemonic to secure storage using Wallet.store()
- Creates EOA Account in AccountManager (no Firebase UID)
- Initializes WalletManager with new account
- Returns success/error response
* chore: remove unused bridge methods
- Remove generateRecoveryPhrase() (using TypeScript implementation)
- Remove createEOAAccount() stub (replaced by saveMnemonic)
- Clean up unused code per code review feedback
* feat: add entrypoint for onboarding flow
* feat: add entrypoint for onboarding flow
* feat: add entrypoint for onboarding flow
* feat: add entrypoint for onboarding flow
* feat: add entrypoint for onboarding flow
* feat: add entrypoint for onboarding flow
* feat: add entrypoint for onboarding flow
* fix: add missing entry point and bridge methods
* fix: add missing entry point and bridge methods
* fix: add missing entry point and bridge methods
* fix: merge conflicts
* fix: feedback
* fix: feedback
* fix: feedback
* fix: feedback
* fix: feedback
* fix: save mnemonic
* fix: save mnemonic
* chore: clean up
* chore: clean up
* chore: clean up
* chore: clean up
* fix: feedback
* fix: feedback
* fix: feedback
* fix: feedback
* fix: feedback
* fix: update method name
* fix: remove mnemonic generation from Secure Enclave account creation
Secure Enclave/COA accounts should NOT have a mnemonic or seed phrase.
They use hardware-backed keys only, distinct from EOA accounts.
Changes:
- Removed BIP39 mnemonic generation from registerServer()
- Removed global mnemonic storage (storeWalletPassword)
- Added comments clarifying this is for Secure Type/COA accounts only
- EOA accounts with seed phrase use the RN flow with saveMnemonic()
This fixes the issue where Secure Enclave profile users were seeing
EOA addresses in their account.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: remove EOA chip for Secure Enclave/COA accounts
Secure Enclave accounts created with hardware-backed keys should NOT
display an EOA chip in the sidebar. They only have:
- Flow Cadence address (main account)
- EVM/COA address (with purple EVM chip)
Changes:
- Removed getEOAAddressCached() check from setupLinkedAccountForHardwareBackedKey()
- Added comment explaining that COA accounts don't have EOA addresses
- EOA addresses are only for seed phrase-based accounts
Fixes issue where Secure Enclave profile showed incorrect EOA chip
in Android sidebar.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: add createLinkedCOAAccount method for Recovery Phrase flow
Recovery Phrase flow now creates a linked COA child account instead of
a separate main account.
Changes:
- Added createLinkedCOAAccount() bridge method
- Calls cadenceCreateCOAAccount() to create linked COA via Cadence transaction
- Returns transaction ID for tracking
This fixes the architecture where Recovery Phrase accounts should have:
1. Main Flow account (created via saveMnemonic)
2. EOA address (derived from mnemonic)
3. Linked COA child account (created via Cadence transaction)
Secure Enclave accounts remain as main COA accounts (no linked child).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: add bridge methods for keys
* feat: add bridge methods for keys
* feat: add bridge methods for keys
* feat: remove cast to lowercase during register outblock call (#2121)
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: refactoring + feedback
* chore: regenerate BridgeModels with InitialRoute and SPResponse
- Add InitialRoute enum for onboarding flow navigation
- Add SPResponse interface for seed phrase generation
- Add SaveMnemonicResponse interface
- Fix broken comment parsing in CreateAccountResponse
* chore: remove debug logs and comments
- Remove excessive Log.d() statements in ReactNativeActivity
- Remove debug println in AccountBridgeHandler
- Import logd utility for consistent logging
* fix: normalize public keys
* fix: feedback
* fix: feedback
* fix: feedback - rename method
* fix: feedback - rename method
* refactor(bridge): rename linkCOAAccountOnChain to registerAccountWithBackend
Renamed method to match PlatformSpec interface naming convention.
Updated all log messages to use new method name.
This resolves Android build error:
- 'linkCOAAccountOnChain' overrides nothing
- Class 'NativeFRWBridge' missing registerAccountWithBackend implementation
* security(bridge): use in-memory storage for unconfirmed seed phrases
Changed generateSeedPhrase() to use InMemoryStorage instead of FileSystemStorage.
The mnemonic should NOT be persisted to disk until the user confirms it.
Security issue: Previously, the mnemonic was written to disk immediately upon
generation, before user confirmation. This creates a security risk if the user
abandons the flow or the app crashes before confirmation.
The mnemonic will be properly saved to secure storage when saveMnemonic() is
called after the user confirms the recovery phrase.
* fix: feedback
* fix: feedback
* feat(android): route Add Account and Create Profile to RN onboarding
Update Android entry points to launch React Native onboarding flow
instead of native activities:
- ProfileSwitchDialog: "Create a new profile" now launches
RN onboarding (GetStartedScreen) via ReactNativeActivity
- DrawerLayoutContent: "Add account" now launches RN onboarding
instead of WalletRestoreActivity
Both entry points use RNBridge.ScreenType.ONBOARDING which routes
to the GetStartedScreen as the initial route.
* chore(android): remove unused WalletUnregisteredFragment
Remove WalletUnregisteredFragment and its layout file as they are
no longer used. All onboarding entry points now route through:
- ProfileSwitchDialog (Create new profile)
- DrawerLayoutContent (Add account)
- Both launch ReactNativeActivity with RN onboarding flow
The WalletUnregisteredFragment was legacy code with no references
in the current codebase.
* fix: feedback
* fix(android): merge dev branch with proper two-button drawer layout
Resolved merge conflicts in DrawerLayoutContent.kt and BridgeModels.kt:
- Kept dev's two-button drawer layout (import wallet + add profile)
- Preserved onboarding-entrypoint's InitialRoute and NativeScreenName enums
- Updated imports to use WalletCreateActivity and WalletRestoreActivity
- Added isTestnet check for profile creation
This merge combines the improved drawer UX from dev with the bridge models
needed for React Native onboarding integration.
* fix(android): merge dev branch with proper two-button drawer layout
Resolved merge conflicts in DrawerLayoutContent.kt and BridgeModels.kt:
- Kept dev's two-button drawer layout (import wallet + add profile)
- Preserved onboarding-entrypoint's InitialRoute and NativeScreenName enums
- Kept BOTH sets of imports for future flexibility:
* Dev's: WalletCreateActivity, WalletRestoreActivity (currently used)
* Onboarding: ReactNativeActivity, RNBridge (for future RN integration)
- Added isTestnet check for profile creation
This merge combines the improved drawer UX from dev with the bridge models
and imports needed for future React Native onboarding integration.
* feat(android): connect drawer add profile button to RN onboarding
- Plus icon button now launches ReactNativeActivity with ONBOARDING screen
- Removed unused imports (WalletCreateActivity, isTestnet, DialogType, etc.)
- Simplified to use React Native onboarding flow for profile creation
* fix: navigate to ProfileTypeSelection instead of GetStarted
Changed onboarding entry points to go directly to ProfileTypeSelection
screen instead of GetStarted screen. This applies to:
- Drawer "Add profile" button
- WalletRestoreActivity import wallet flow
Also removed duplicate ONBOARDING case in when statement.
Closes #373
* fix(android): use launchWithRoute for existing user entry points
- Revert ONBOARDING default route back to GET_STARTED for new users
- Update drawer "Add profile" button to use launchWithRoute with PROFILE_TYPE_SELECTION
- Update wallet import flow to use launchWithRoute with PROFILE_TYPE_SELECTION
This ensures:
- New users see GetStarted screen first
- Existing users skip GetStarted when adding profiles or importing wallets
* fix: feedback
* chore(android): remove auto-generated React Native assets from git
Removed 58 auto-generated image files from version control:
- 51 React Navigation icon assets (__node_modules_*)
- 7 workspace package assets (__packages_*)
These files are automatically generated during React Native builds
and should not be committed. Updated .gitignore to prevent future
commits of these auto-generated resources.
The optimized/resized native Android assets (ic_launcher, ic_crown,
etc.) remain in version control as they are intentionally optimized
native resources.
* fix: register v3
* chore: restore FirebaseAuth.kt to dev branch version
The custom Firebase auth changes are no longer needed as registration
is working correctly with the original implementation.
* fix: register v3
* fix: align with dev
* fix: align with dev
* fix: align with dev
* fix: align with dev
* fix: align with dev
* fix: fix the secure enclave flow
* fix: fix the secure enclave flow
* feat: add dynamic progress bar for SecureEnclave account creation
- Add event emitter in NativeFRWBridge to send progress events to React Native
- Add progress events in registerSecureTypeAccount (0%, 20%, 40%, 80%, 100%)
- Add delay before promise resolution to ensure events are delivered
* refactor: remove unused signOutAndSignInAnonymously method
- Removed from NativeFRWBridge.kt bridge interface
- Removed implementation from AuthBridgeHandler.kt
- Method was not used anywhere in the codebase
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* chore: bump flow-kmm
* chore: bump flow-kmm
* fix: new endpoints + flow-kmm
* chore: bump flow-kmm to 0.1.1
* chore: latest /v2/address
* chore: latest /v2/address
* chore: latest /v2/address
* chore: latest /v2/address
* fix: update event name to camelCase and fix saveMnemonic parameter order
* chore: bump wallet kit
* chore: bump wallet kit
* fix: registration flow
* fix: pull from dev
* fix: pull from dev
* feat: add InitialRoute enum for React Native navigation
* fix: pull from dev
* fix: update registerSecureTypeAccount response to use hardware accountType and include txId
* chore: add timing and improved logging for fetchAccountByCreationTxId
* chore: add network debug logging for fetchAccountByCreationTxId
* fix: ensure mainnet is used for account creation (backend creates on mainnet)
* refactor: add early return registration and initWalletWithTxId for secure enclave flow
* fix: store prefix between early return and wallet init for secure enclave flow
* fix: pull from dev
* chore: clean up
* chore: clean up
* fix: align bridge handlers with dev's new walletNodes architecture
- Remove evmAddressData references (now in walletNodes)
- Replace walletAddress() with getFlowWalletAddress()
- Replace getEOAAddressCached() with getEOAAddress()
- Remove EVMWalletManager.clear()/init() calls
- Remove WalletManager.init()/onWalletReady() calls
- Remove AccountManager.updateWalletInfo()/updateEVMAddressInfo() calls
- Update childAccountList() to return List<ChildAccount> directly
* fix: populate walletNodes with FlowWallet during registration
- registerOutblock: Create FlowWallet from createdAddress and add to walletNodes
- initWalletWithTxId: Create FlowWallet from createdAddress and add to walletNodes
- setupAccountAndWallet (AuthBridgeHandler): Create FlowWallets from walletListData
This ensures accounts are immediately usable after registration without
waiting for the async WalletDataManager to populate walletNodes from
the key indexer (which may have indexing delays for new accounts).
* fix: add FlowWallet to walletNodes after Flow address is confirmed
In recovery phrase flow, walletListData.blockchain is null when
setupAccountAndWallet is called. The Flow address becomes available
later via WalletFetcher. Now we check if FlowWallet is missing after
the address is confirmed and add it to walletNodes.
* fix: preserve existing FlowWallets when key indexer returns empty
WalletDataManager.updateCurrentAccountData() was overwriting manually-added
FlowWallets with just EOAWallet when key indexer hadn't indexed new accounts yet.
Now we check if the key indexer found any FlowWallets - if not, we preserve
the existing FlowWallets that were added during account creation.
* fix: disable EOA for secure enclave (P256) accounts
Secure enclave accounts use ECDSA_P256 and should not have an EOA.
EOA is only for recovery phrase accounts that use ECDSA_secp256k1.
Check signing algorithm to determine account type and skip EOA
derivation for P256 accounts in both updateCurrentAccountData
and updateNonCurrentAccountData.
* chore: clean up
* chore: clean up
* chore: clean up
* chore: clean up
* chore: clean up
* chore: clean up
* chore: clean up
* chore: remove unused native wallet creation files
- Delete WalletCreateActivity and WalletCreateViewModel (no longer launched)
- Delete warning/, mnemoniccheck/, pincode/guide/ folders (unused)
- Delete individual fragment files: WalletCreateMnemonicFragment,
WalletCreatePinCodeFragment, WalletCreatePinCodePresenter,
WalletCreateUsernameFragment, WalletCreateUsernamePresenter
- Delete model/WalletCreateContentModel and presenter/WalletCreateContentPresenter
- Update WalletCreateCloudPwdPresenter to remove WalletCreateViewModel dependency
Kept files that are still used by backup/restore/security:
- cloudpwd/ (Google Drive backup)
- mnemonic adapters/models (backup flows)
- pincode widgets (pin code flows)
- username models/viewmodels (keystore restore)
- Utils.kt (wallet restore)
* fix: sync AccountManager.kt with dev
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 01dd8e6 commit 07eaec7
File tree
22 files changed
+2
-967
lines changed- app/src/main/java/com/flowfoundation/wallet/page/walletcreate
- fragments
- cloudpwd
- mnemoniccheck
- mnemonic
- pincode
- guide
- pin
- username
- warning
- model
- presenter
22 files changed
+2
-967
lines changedLines changed: 0 additions & 76 deletions
This file was deleted.
Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 2 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
18 | | - | |
19 | 17 | | |
20 | 18 | | |
21 | 19 | | |
| |||
27 | 25 | | |
28 | 26 | | |
29 | 27 | | |
30 | | - | |
31 | 28 | | |
32 | 29 | | |
33 | 30 | | |
| |||
64 | 61 | | |
65 | 62 | | |
66 | 63 | | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
| 64 | + | |
| 65 | + | |
72 | 66 | | |
73 | 67 | | |
74 | 68 | | |
| |||
Lines changed: 0 additions & 63 deletions
This file was deleted.
Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 0 additions & 95 deletions
This file was deleted.
Lines changed: 0 additions & 31 deletions
This file was deleted.
Lines changed: 0 additions & 5 deletions
This file was deleted.
0 commit comments