Skip to content

Accounts management redesign: full-screen accounts, wallet names, import under Advanced - #594

Open
n13 wants to merge 11 commits into
mainfrom
feat/accounts_management_redesign
Open

Accounts management redesign: full-screen accounts, wallet names, import under Advanced#594
n13 wants to merge 11 commits into
mainfrom
feat/accounts_management_redesign

Conversation

@n13

@n13 n13 commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Implements the updated account management design (Figma node 4184-16283), built on top of the keystone design branch.

Changes

  • Full-screen Accounts screen — the bottom-sheet popup is replaced by a full screen (AccountsScreen) that slides in from the right with a back button. All add/import/disconnect flows still pop back to it by route name.
  • Main wallet on top, others collapsible — the first wallet renders expanded with its name, an edit pencil, and an ACTIVE WALLET badge. Additional wallets (software and keystone) collapse into a single row showing the wallet's total balance and account count, expanding in place to reveal accounts and the encrypted account. The Wallet 1 / Wallet 2 segmentation headers are gone.
  • Optional wallet names — minimal storage in SettingsService (wallet_name_<index>, cleaned up on removeWallet). New WalletNameScreen (mirrors the account naming screen) opens from the pencil next to a wallet name; unnamed wallets fall back to "Wallet {n}". The wallet picker in settings also shows custom names.
  • Import flow names the wallet — after importing a wallet from a recovery phrase, the Wallet Name screen is shown before returning to Accounts with the new account highlighted. Leaving it empty skips naming.
  • Import Account moved under Advanced — the Add Account screen now shows Add Transparent Account and Add Keystone Wallet as primary options; Advanced (always visible) holds the multisig options (feature-flagged, as before) and Import Account.

Notes

  • accounts_grouping.dart reworked from a flat segmented item list to WalletGroups; unit tests updated and extended (softwareWalletNumber unchanged for the disconnect-wallet copy).
  • Wallet containing the active account (or a newly added highlight target) auto-expands on open.
  • Unused sub-segment l10n keys removed; new strings added in English and Indonesian.

Testing

  • melos run analyze (--fatal-infos) clean across packages
  • mobile-app unit/screen/model tests and quantus_sdk service tests pass
  • Ready for simulator testing

n13 added 6 commits July 31, 2026 18:29
- render icons
- fix steps
…ort under advanced

- Accounts popup sheet replaced by a full-screen AccountsScreen pushed from
  the right with a back button
- Main wallet renders expanded on top with an Active Wallet badge; other
  wallets collapse to a single row showing total balance and account count,
  expandable in place; Wallet 1 / Wallet 2 segmentation dropped
- Optional per-wallet names stored in SettingsService (wallet_name_<index>),
  editable via a new WalletNameScreen (pencil next to the wallet name) and
  offered after importing a wallet; falls back to Wallet {n}
- Import Account moved under the Advanced section of Add Account
- accounts_grouping reworked to produce WalletGroups instead of a flat
  segmented list; tests updated
Flexible(flex 1) name next to a Spacer split the free space, leaving the
expanded-wallet caret mid-row; group name+pencil in an Expanded instead.
@n13

n13 commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator Author
Simulator Screenshot - iPhone 17 - 2026-08-02 at 17 29 25

n13 added 3 commits August 3, 2026 09:33
groupWallets moves the wallet containing the active account to the front
(numbering stays stable); the screen no longer auto-expands the active
wallet since it now renders as the top section. Account and multisig rows
swap the pencil icon button for a plain side caret that opens the menu;
row tap still switches the account and dismisses.
- New theme colors errorLight, errorDeep, surfaceHero replace hardcoded
  hex values in the keystone hero and warning cards; alpha derivation
  unified on useOpacity (no withValues in widgets)
- UnderlinedTextLink folded into QuantusButton as ButtonVariant.underline
- invalidateAccountProviders() replaces the repeated accountsProvider +
  activeAccountProvider invalidation pairs
- Scanner overlay/brackets use theme colors; drop redundant width: null
- AGENTS.md: UI conventions (theme colors, useOpacity, theme text styles,
  extend existing components)
}

if (accountsAsync.hasError || multisigAsync.hasError) {
return Center(

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This is violating DRY principle, we shouldn't repeat this piece. Only the text content changing.

const SizedBox(height: 8),
Text(
_walletBalanceText(l10n, wallet),
style: context.themeText.smallParagraph!.copyWith(fontSize: 14, color: colors.textTertiary, height: 1),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I want to nit about small paragraph already fontSize 14 being overridden with value 14 again. Sry about this, but just ridiculous to override fontSize with same value. Might as well not use the textStyle token.

const SizedBox(width: 8),
Text(
l10n.accountsScreenAccountCount(wallet.accountCount),
style: context.themeText.smallParagraph?.copyWith(fontSize: 14, color: colors.textSubtle, height: 1),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same

),
child: Text(
label.toUpperCase(),
style: context.themeText.detail?.copyWith(

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

We have tiny for font size 11, but anyway, like I mentioned in the other PR, we need to discuss about theme style so we don't keep pilling noise. Because right now already not like the original goal when we add this text theme token.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I think it's basically from the design system

Our current design system is - we have a font type, then various attributes on the fonts

We don't have a system with a few specific types

Could ask Sejal about this

@dewabisma dewabisma left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Few nits.

Overall looking good.

We really need to discuss about the text theme soon. So, we don't keep dirtying our codebase with the misuse.

@dewabisma dewabisma left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM!

Base automatically changed from feat/keystone_design to main August 3, 2026 13:31
…ent_redesign

# Conflicts:
#	mobile-app/lib/v2/screens/accounts/account_menu_screen.dart
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