Skip to content

Fix wallet HD mode persistence and migration bugs#3068

Closed
CharlVS wants to merge 3 commits intodevfrom
cursor/fix-wallet-hd-mode-persistence-and-migration-bugs-261d
Closed

Fix wallet HD mode persistence and migration bugs#3068
CharlVS wants to merge 3 commits intodevfrom
cursor/fix-wallet-hd-mode-persistence-and-migration-bugs-261d

Conversation

@CharlVS
Copy link
Copy Markdown
Collaborator

@CharlVS CharlVS commented Aug 12, 2025

Persist wallet HD mode after sign-in and fix incorrect mode application during legacy wallet migration.

Previously, the login flow would incorrectly force iguana mode during legacy wallet migration if the user was not yet loaded from the SDK. Additionally, the selected wallet type was not persisted after a successful sign-in, causing HD mode changes to be lost across sessions.


Open in Cursor Open in Web

Co-authored-by: charl <charl@vanstaden.info>
@cursor
Copy link
Copy Markdown

cursor bot commented Aug 12, 2025

Cursor Agent can help with this pull request. Just @cursor in comments and I'll start working on changes in this branch.
Learn more about Cursor Agents

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Aug 12, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch cursor/fix-wallet-hd-mode-persistence-and-migration-bugs-261d

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@CharlVS CharlVS self-assigned this Aug 12, 2025
@CharlVS
Copy link
Copy Markdown
Collaborator Author

CharlVS commented Aug 12, 2025

@cursor how can this be tested?

@CharlVS CharlVS marked this pull request as ready for review August 12, 2025 18:17
@cursor
Copy link
Copy Markdown

cursor bot commented Aug 12, 2025

I enhanced the user experience for wallet import by providing more specific mnemonic validation errors. Additionally, I refactored the CoinAddressesBloc to be more resilient during address generation and pubkey watching, and refined the withdrawal form's memo field display logic.

  • Improved mnemonic validation error messages:
    • I added new translation keys (mnemonicInvalidWordError, mnemonicInvalidChecksumError, mnemonicInvalidLengthError) to assets/translations/en.json and lib/generated/codegen_loader.g.dart.
    • I updated the _validateSeed method in lib/views/wallets_manager/widgets/wallet_simple_import.dart to leverage these new, specific error messages from the SDK's MnemonicFailedReason enum, providing clearer feedback to users during wallet import.
  • Enhanced CoinAddressesBloc robustness and type safety:
    • I updated the import of AssetPubkeys in lib/bloc/coin_addresses/bloc/coin_addresses_bloc.dart and refined the _pubkeysSub type to StreamSubscription<AssetPubkeys>.
    • I refactored _onCreateAddressSubmitted to use sdk.pubkeys.watchCreateNewPubkey with a try-catch block for better error handling during address creation, and added a non-fatal error handling for analytics parsing.
    • I made _startWatchingPubkeys asynchronous, ensuring proper cancellation and precaching of pubkeys, and added isClosed checks to prevent state updates on a closed bloc.
    • I ensured CoinAddressesPubkeysSubscriptionFailed correctly sets the bloc's status to FormStatus.failure.
  • Refined withdrawal form memo field display:
    • I removed the standalone MemoField widget from lib/views/wallet/coin_details/withdraw_form/widgets/fill_form/fields/fields.dart.
    • I integrated the memo field logic directly into lib/views/wallet/coin_details/withdraw_form/withdraw_form.dart as WithdrawMemoField, making it conditionally visible only for TendermintProtocol or ZhtlcProtocol assets.
  • Minor UI formatting and dependency updates:
    • I applied minor formatting adjustments to onChanged callbacks in lib/views/wallet/coin_details/withdraw_form/widgets/fill_form/fields/fields.dart for improved readability.
    • I updated various package dependencies in pubspec.lock and packages/komodo_ui_kit/pubspec.lock, including komodo-defi-sdk-flutter to a newer commit.

Open in Cursor Open in Web

Learn more about Cursor Agents

@CharlVS CharlVS added the bug Something isn't working label Aug 12, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Aug 12, 2025

Visit the preview URL for this PR (updated for commit ce496c6):

https://walletrc--pull-3068-merge-gvjprbj9.web.app

(expires Thu, 21 Aug 2025 16:36:00 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: f66a4ff03faa546f12f0ae5a841bd9eff2714dcc

@CharlVS CharlVS marked this pull request as draft August 12, 2025 18:32
Remove unnecessary HD state storage in metadata in favour of letting SDK handle it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants