Skip to content

feat(deposit): invert the conversion graphic for USDC deposits - #620

Merged
bmc08gt merged 2 commits into
mainfrom
feat/usdc-to-dollars-conversion-graphic
Aug 21, 2026
Merged

feat(deposit): invert the conversion graphic for USDC deposits#620
bmc08gt merged 2 commits into
mainfrom
feat/usdc-to-dollars-conversion-graphic

Conversation

@bmc08gt

Copy link
Copy Markdown
Collaborator

Follow-up to the v2 withdraw intro screen: the deposit side (Add Money → Other Wallet) pointed its arrow the wrong way and spelled the reserve as "USDF".

The graphic

USDCDepositEducationScreen and WithdrawIntroScreen each carried their own private copy of the same two-coins-and-an-arrow art. Promoted to FlipcashUI as ConversionGraphic, parameterised by which coin sits on each side:

ConversionGraphic(from:.usdcOnSolana, to:.dollars)

Same name and shape as the Android component, so the two stay diffable.

Copy for the deposit screen is now "Your USDC will be converted 1:1 to Dollars on Flipcash", with the accessibility label updated to match. The "Deposit USDC" title is deliberately unchanged — FlipcashUITests/Support/Screens/USDCDepositEducationScreen.swift asserts on it.

Art is Figma node 9216:19798.

The "of X" suffix

Separate commit. The processing success title reads <amount> of <currency>, which names what the user received — useful for a community currency, redundant for the reserve, where it rendered "$1.00 of Dollars". Suppressed for the two cases that land there:

  • Add MoneyAddMoneyProcessingViewModel returns the bare formatted amount.
  • Convert into the reserve — ConvertFlowDestinationView already passes the destination as targetMint, so this is a where clause ahead of the shared branch, nothing new threaded through. Its doc comment claimed it was analytics-only, which is no longer true.

Every other swap keeps its suffix.

The sell path also lands in the reserve and still reads "of USDF", but it's unreachable — onSell lives only in the v1 LoadedContent branch of CurrencyInfoScreen, which #619 deletes along with the whole CurrencySell* group. Collapsing that branch (and the then-dead SwapType.sell) is stacked on #619 rather than done here.

No test for the convert title: displayState and exchangedFiat are private(set) and only reachable by driving startPolling against a live client, so it isn't callable from FlipcashTests without a wider refactor.

Android parity

code-payments/code-android-app#1300 mirrors both changes.

The USDC deposit education screen, reached from Add Money -> Other
Wallet, pointed its arrow the wrong way for a deposit and spelled the
reserve as "USDF".
Both this screen and WithdrawIntroScreen carried their own private copy
of the same two-coins-and-an-arrow art, so promote it to FlipcashUI as
ConversionGraphic, parameterised by which coin sits on each side, and
have both call it. Mirrors the Android component of the same name.
Copy drops the USDF branding. The "Deposit USDC" title stays as-is; the
UI-test page object asserts on it.
The processing success title reads "<amount> of <currency>", which names
what the user received. That only helps when the destination is a
community currency: adding money and converting into the reserve both
rendered "$1.00 of Dollars", where the amount alone already said it.
Suppress the suffix for those two, keeping it everywhere it still reads
correctly. A convert already carries its destination as targetMint, so
the check costs nothing to thread through.
Sign up for freeto 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.

1 participant

@bmc08gt