Surface failed and pending outbound payments in list_transactions - #89
Surface failed and pending outbound payments in list_transactions#89hash-money wants to merge 1 commit into
Conversation
Both mapping paths hid every non-Completed payment. The comment justified hiding issued-but-unpaid inbound invoices, but the condition also swallowed failed and in-flight *outbound* payments — a failed send leaves no record in the wallet's transaction list at all, and a UI built on list_transactions cannot show the user what happened. Hide only non-completed inbound records (unpaid invoices/quotes stay noise); outbound attempts always surface. Applies to both the self-custodial path (should_surface_lightning_payment_without_metadata gains the direction) and the trusted-payment fallback branch. Observed downstream (emergent-money/graduated-wallet#328): a failed BOLT11 send was absent from history while the UI already renders a 'failed' status for records it receives.
benthecarman
left a comment
There was a problem hiding this comment.
I would rather not put all these in the list_transactions function, would adding a get_transaction function fix your usecase here so you can track an individual payment state?
|
Sorry for the slow turnaround, and thanks for taking a look. Honest answer: For the asynchronous case — The shape of the need is a list, not a watch: the screen has to render "you tried to send X, it failed" with no prior handle on the payment. That said, your objection to loading this into
(2) is my guess at what you'd prefer. Say which and I'll rework the PR. Happy to add |
list_transactionscurrently hides every payment whose status isn'tCompleted, on both mapping paths. The comment justifies hiding issued-but-unpaid inbound invoices — but the condition also swallows failed and in-flight outbound payments, so a failed send leaves no record at all. A wallet UI built onlist_transactionscan't show users what happened to a payment they made (downstream report: emergent-money/graduated-wallet#328 — our UI already renders afailedstatus for records it receives, they just never arrive).This keeps the unpaid-inbound filtering and surfaces outbound attempts regardless of status:
should_surface_lightning_payment_without_metadatagains the payment direction; outbound always surfaces.!outbound &&guard.Unit tests: failed/pending outbound listed, inbound failure (expired unpaid invoice) still hidden; existing pending-onchain cases updated for the new parameter.
cargo test -p orange-sdk --lib17/17.