Skip to content

Add Buy with Cash App top-up flow#900

Closed
gudnuf wants to merge 6 commits intomasterfrom
cash-app-topup
Closed

Add Buy with Cash App top-up flow#900
gudnuf wants to merge 6 commits intomasterfrom
cash-app-topup

Conversation

@gudnuf
Copy link
Contributor

@gudnuf gudnuf commented Mar 2, 2026

Summary

  • New "Buy" feature that generates a Lightning invoice and presents it as a Cash App deep link (cash.app/launch/lightning/<bolt11>)
  • On mobile, tapping "Open Cash App" opens the app directly; on desktop, a QR code is shown
  • Home page layout updated: Receive + Buy (primary) top row, Send full-width below

New files

  • app/features/buy/ — cash-app-logo, buy-provider (reuses receive store), buy-input (amount + numpad + account selector), buy-checkout (quote creation + deep link/QR)
  • app/routes/_protected.buy*.tsx — layout, index, checkout routes

Modified files

  • app/features/receive/receive-cashu.tsx — exported AmountBreakdownCard
  • app/routes/_protected._index.tsx — new home button layout

Test plan

  • Navigate home, verify Receive/Buy/Send layout (Buy is primary)
  • Tap Buy → enter amount → verify Cash App logo in numpad row
  • Continue → checkout: desktop shows QR, mobile shows "Open Cash App" button
  • Verify account selector works (switch accounts)
  • Verify back navigation (checkout → input → home)
  • Verify payment polling navigates to transaction on success

🤖 Generated with Claude Code

@vercel
Copy link

vercel bot commented Mar 2, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agicash Ready Ready Preview, Comment Mar 3, 2026 6:45am

Request Review

@supabase
Copy link

supabase bot commented Mar 2, 2026

This pull request has been ignored for the connected project hrebgkfhjpkbxpztqqke because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

gudnuf added 6 commits March 2, 2026 19:58
Pull the duplicated MoneyInputDisplay + ConvertedMoneySwitcher out of
send-input and receive-input into features/shared/money-input-display.
The new component composes the raw amount display with the currency
switcher and takes the same props both consumers were already threading
through.
The prop name now describes intent (fires on invalid input) rather than
implementation (shake animation). Consumers still own the animation
choice via useAnimation — this just clarifies the contract.
Composes useMoneyInput + useAnimation into a single hook so consumers
don't wire them together manually. handleNumberInput is now single-arg
(shake fires internally on invalid input). Also exposes showDecimal and
inputErrorClassName so consumers don't derive them.
Consolidate useMoneyInputField, MoneyInputLayout, and the display
components into a single money-input-layout module. The hook and layout
are always used together so they live in one file. Display components
are now internal — consumers compose via the layout's slots (children,
actions, belowDisplay).

Send uses belowDisplay for its destination row between the amount
display and account selector.
Add ReceiveQuote type and getReceiveQuote action to the receive store,
allowing the buy flow (and future flows) to create receive quotes
directly through the store. The provider injects cashu/spark quote
creation as dependencies.
Buy flow lets users purchase bitcoin via Cash App Lightning payments.
Uses the receive store to create invoices, then deep-links to Cash App
for payment. Supports both Cashu and Spark accounts.
@gudnuf
Copy link
Contributor Author

gudnuf commented Mar 3, 2026

claude opened #905 for me instead, I meant to just force push to this pr. Closing this one

@gudnuf gudnuf closed this Mar 3, 2026
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.

1 participant