Skip to content

Conversation

@OlegMakarenko
Copy link
Contributor

@OlegMakarenko OlegMakarenko commented Jan 16, 2026

Problem

The app lacks AccountDetails, Send, and Settings screens.

Solution

MAIN CHANGES:

  1. Added new screens:

1.1 AccountDetails - this screen displays account main information such as address, public key, chain & network and allows to reveal private key after entering passcode. It also has the block explorer link and for the testnet - the faucet link.

1.2 Send - this screen is responsible for sending transfer transactions. It has a form to input recipient address, select token, enter amount, message and select fees. Supports different chains and will be used by them later. The screen is using TransactionScreenTemplate component/template that handles all transaction-sending functionality. It uses wallet controller for signing and announcing transaction. Also it renders confirmation dialog before signing. It renders transaction status tracking dialog allowing users to see the current step of the transaction sending process - transaction creation, sign, announce and confirmation. If any error occurred - it shows its text next to errored step.

1.3 Settings - this screen displays a list of app settings. Some list items redirect to other screens for detailed configuration, and some execute actions directly on the screen such as - language selection, fiat currency selection and logout (removing all accounts from wallet controller and clearing cache (with confirmation dialog)).

1.4 SettingsAbout - this is a simple screen that displays app, symbol-sdk and react-native version from package.json and also display links to our github, twitter and discord (urls specified in the app config file).

1.5 SettingsNetwork - this screen allows to switch between mainnet and testnet and select the node - automatic selection or manually from the list (nodewatch). Below the selectors there are a table showing some basic network info - network identifier, connected node url, chain height, min. fee multiplier.

1.6 SettingsSecurity - this screen allows to enable or disable passcode confirmations and also has a component to reveal mnemonic seed phrase (after passcode confirmation if enabled).

Added account info to Home screen (AccountCardWidget).

SECONDARY CHANGES:

  1. Improved project structure.
    Component groups organized by role:
  • controls/ - Interactive UI controls (buttons, inputs, selectors)
  • display/ - Display-only components, data type presentation
  • features/ - Feature-specific complex components that use some logic
  • feedback/ - User feedback components (modals, statuses, alerts)
  • layout/ - Layout and container components. Elements positioning
  • templates/ - Page templates, providing reusable functionality
  • typography/ - Text components
  • visual/ - Visual elements (icons, images)
  1. Improved JS-Doc description for each component.

  2. Added new components:

  • Dropdown - A selection component that displays the current value and opens a modal interface for choosing from a list of options.
  • FeeSelector - A component for selecting transaction fee levels among slow, medium, and fast options using a slider interface.
  • InputAddress - An input field for entering addresses, with validation and an optional dropdown for selecting from saved contacts and wallet accounts.
  • InputAmount - An input field for entering amounts, with validation, price conversion display, available balance information, and a max amount selection.
  • SelectToken - A dropdown selector for choosing tokens from a provided list, displaying token names, tickers, and amounts.
  • AccountAvatar - Displays an avatar for a given account address. If a custom imageId is provided, it uses that image. Otherwise, it generates a blockie image based on the address.
  • AccountView - A display component showing an account's avatar alongside its name or address, with support for different sizes.
  • CopyButtonContainer - A container component that displays content alongside a copy button for copying the associated value.
  • EditButtonContainer - A container component that displays content alongside an edit button for triggering edit actions.
  • TokenAvatar - Displays an avatar for a given token. If a known token image identifier is provided, it uses that image. Otherwise, it falls back to a default token image.
  • ActivityLogView - A component for displaying a sequential list of activity items, each with an icon, title and progress status.
  • Amount - A display component for showing numeric values with ticker symbols, supporting conditional coloring based on positive/negative values and multiple size variants.
  • BooleanView - A display component that shows boolean values using checkmark or cross icons, with optional accompanying text.
  • MessageView - A display component for transaction messages, showing appropriate icons for encrypted or raw message types and displaying human-readable text when available.
  • TableView - A component for displaying structured data in a tabular format, supporting various row types such as accounts, tokens, messages, and booleans with appropriate visual representations.
  • Alert - A component for displaying status messages with optional icons and titles, supporting various visual variants for different message types.
  • StatusCard - A card component for displaying status information with an icon, supporting various visual variants and optional additional content.
  • ActionRow - A layout component arranging child content and an optional button in a horizontal row, supporting stretching to fill available width.
  • Card - A container component providing background color and rounded corners for grouping related content, supporting customizable border radius and color.
  • Field - A layout component grouping a title label with associated content, supporting inverse color scheme for titles.
  • TransactionScreenTemplate - A reusable screen template component that provides functionality for sending transactions. It has confirmation dialogs, status tracking, and multisig account warnings.
  1. Added lib/blockie to generate account avatars based on the address. Lib is reused from Ethereum's Metamask. Refactor was done to make it more readable and converted to ES6 syntax to use in the wallet. Also added some configuration abilities via class constructor to setup color ranges to meet application color theme (hue, saturation and lightness).

  2. Added test helpers, fixture builders, improved mocking functions.

  3. Covered all new screens with tests. Added additional tests for components to reach the test coverage requirements.

  4. Improved some existing screen tests - defined constants, etc to make it better readable and maintainable.

  5. Refactor main root app component - App.js. Now it is located under src/app directory. Some logic is moved to internal hooks (src/app/hooks), RootLayout which defines app main layout is now in layout directory (src/app/layout). Improved component readability.

  6. Setup account and token configs. Also defined their image resolutions. Now we can specify know accounts and tokens and resolve them by their address and token (mosaic) id into their name and image. Used in AccountView, AccountAvatar, TokenView and TokenAvatar components. To resolve this data need to first use resolution functions from utils/account and utils/token that return name and imageId if the entry is in the config.

  7. Additional global hooks were added.

…countAvatar, AccountView, add known account images, and helpers
…nAvatar, TokenView, add known token config, images, and helpers
…screen, add pull-to-refresh option to Screen component
…ng sending transactions and polling confirmation status
@OlegMakarenko OlegMakarenko changed the title [WIP] [wallet/symbol/mobile] feat: add AccountDetails, Send and Settings screens [wallet/symbol/mobile] feat: add AccountDetails, Send and Settings screens Jan 22, 2026
@OlegMakarenko OlegMakarenko marked this pull request as ready for review January 22, 2026 15:42
@OlegMakarenko OlegMakarenko requested a review from Wayonb January 22, 2026 15:53
"data_v_mosaicRestrictionTypeLT": "<",
"data_v_mosaicRestrictionTypeNE": "≠",
"data_v_mosaicRestrictionTypeNONE": "制限なし",
"fieldTitle_accountAliasNames": "エイリアスネーム",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@daoka when you have time to review these? 🙏🏾

@OlegMakarenko OlegMakarenko requested a review from Wayonb February 4, 2026 19:27
Copy link
Contributor

@Wayonb Wayonb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏾

@OlegMakarenko OlegMakarenko force-pushed the wallet-symbol-mobile/home branch from b7f2ca3 to 9cd2f26 Compare February 5, 2026 20:38
@OlegMakarenko OlegMakarenko merged commit 1306048 into dev Feb 5, 2026
22 checks passed
@OlegMakarenko OlegMakarenko deleted the wallet-symbol-mobile/home branch February 5, 2026 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants