Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • A Ahad Mobile
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • holatech
  • Ahad Mobile
  • Merge requests
  • !6

feat(deposit): rebuild the share-deposit-address screen and drop the exchange path

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged Khanh Pham requested to merge feat/remove-exchange-deposit-path into develop Aug 19, 2026
  • Overview 0
  • Commits 6
  • Pipelines 1
  • Changes 13

Rebuilds the deposit flow's "Share your deposit address" screen to the new mockup, and removes the dead "Send from an Exchange" path on the way in.

All changes are in fe/. Nothing under be/ is touched.

What changed

1. Removed the "Send from an Exchange" deposit path (d956337)

The card was inert — its provider (daimo) was removed in 97b687e8, leaving a disabled card with a "Coming soon" badge. Dropped the path entirely, plus the enabled flag, disabled prop and badge styling it orphaned. The Fiat card's own "Coming soon" badge in add-funds-form.tsx is a separate mechanism and stays.

2. Rebuilt /deposit-detail to the mockup (5067fdf, 015cbb7, 201e655, 4a269ea, f08119d)

Section Before After
Header "Deposit {TOKEN}", hand-rolled "Share deposit address", shared Header
Token Tap-to-cycle chip Labelled dropdown → searchable sheet
Network Tap-to-cycle chip Labelled dropdown → searchable sheet
QR area Card + Network/Min-Deposit row Card: QR, {TOKEN} deposit address, address + copy
Below Save QR / Share QR buttons Reminder box, dismissible "more networks" banner, OK button

Selection order is inverted. The screen used to auto-select the first network and derive the token list from it. It now picks the token first and filters networks by it — matching the mockup (token pre-filled, network empty) and the existing withdraw-v2 screen.

Product decisions baked in

  • Built light, not dark. The mockup is drawn dark with a gold accent, but the app is light. Structure, copy and layout follow the mockup; colours follow the app's existing design language, with withdraw-v2.tsx as the template.
  • No per-chain logos. Network rows show name + check mark only — the repo has no chain logo assets.
  • Save QR / Share QR and "Minimum Deposit" are intentionally removed, replaced by the OK button.

Preserved deliberately

The stale-response guard in deposit-detail-form.tsx (latestRequestRef + both isStale() checks) is byte-identical through all five commits. It fixes the bug from 85184700 where switching network mid-flight could display another chain's address. Its two covering tests were ported to the inverted token/network roles without being weakened — verified by deleting each guard and confirming the matching test goes red.

Failure states added

Review surfaced two states where the user could get stuck with no message and no way forward. Both now show a message and a working retry:

  • Asset catalog empty or failing → "Could not load the tokens available for deposit."
  • Blockchain catalog failing while assets succeed (every token yields zero networks) → "Could not load the networks available for deposit."

The address card and OK button are also gated on a non-empty address, so a placeholder QR can never render under the "{TOKEN} deposit address" caption.

Verification

  • pnpm test — 51 tests / 8 suites pass
  • pnpm type-check — clean
  • pnpm lint — 0 errors (7 pre-existing warnings, none in touched files)

Follow-ups, deliberately not in this MR

  • expo-media-library, expo-sharing and react-native-view-shot now have zero references in fe/src — they were only used by the deleted Save/Share handlers. Removing them from package.json is a separate change.
  • The QR encodes MoanaPay://payment?qrData=<address> rather than the bare address. An external wallet scanning it gets an unparseable deep link. Pre-existing behaviour, preserved here — needs a product call.
  • The token picker lists the union of symbols across every chain, so native and testnet symbols (ETH, SOL, …) appear. Worth confirming that is intended.
  • No unit tests yet for the two new bottom sheets (search, debounce, empty state).

🤖 Generated with Claude Code

https://claude.ai/code/session_01X4ig6PgRgxk9pmuKxiXXdm

Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: feat/remove-exchange-deposit-path