Skip to content

Show why a recipient can't receive a token - #6330

Open
j0ntz wants to merge 1 commit into
developfrom
jon/recipient-not-ready-error
Open

j0ntz wants to merge 1 commit into
developfrom
jon/recipient-not-ready-error

Conversation

@j0ntz

@j0ntz j0ntz commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Description

When an engine refuses a send because the recipient can't receive the asset yet, it throws a named RecipientNotReadyError carrying the reason and the currency code. The Stellar engine throws it from EdgeApp/edge-currency-accountbased#1146 for an unactivated account, a missing trustline, or a missing issuer authorization.

The send scene mapped only insufficient-funds and pending-funds errors to readable cards. This refusal showed the generic "check your network connection" card instead. The scene now shows localized text naming what the recipient has to do, falling back to the engine's message for a reason the app doesn't know. Every other error renders as before.

Asana: Stellar token support

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

EdgeApp/edge-currency-accountbased#1146 produces the error. This PR builds and passes on its own: without that engine change the new branch never matches and the scene behaves as it does on develop.

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

Verified on the iOS simulator against Stellar mainnet with no funds moved; screenshots below.


Note

Low Risk
Send-scene error display only; no auth, funds flow, or persistence changes beyond mapping one new error type to clearer copy.

Overview
When a send fails with the engine's RecipientNotReadyError (unactivated account, missing trustline/token, or missing issuer authorization), the send scene now surfaces localized, actionable copy instead of the generic network-style failure card.

A new describeRecipientNotReady helper maps known reason values to three new strings (account not activated, token not added, not authorized by issuer), uses the chain display name and token code in the message, and falls back to the engine's message for unknown reasons. SendScene2 calls this in the existing make-spend error path after pending-funds handling, so other errors are unchanged.

Unit tests cover all reason branches and non-matching errors; CHANGELOG notes the UX change.

Reviewed by Cursor Bugbot for commit a37eac6. Bugbot is set up for automated code reviews on this repo. Configure here.

Test evidence

a37eac6
Show why a recipient can't receive a token
2026-11-07

20. c1 fix amount modal

21. c1 fix send scene

22. c2 fix amount modal

23. c2 fix send scene

When an engine refuses a send because the recipient can't receive the
asset yet, it throws a RecipientNotReadyError naming the reason
(account not activated, token not added, issuer authorization missing)
and the currency code. The send scene mapped only insufficient-funds and
pending-funds errors to readable cards, so this refusal showed the
generic "check your network connection" card. Map it to localized text
naming what the recipient has to do, falling back to the engine's
message for a reason the app doesn't know.
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