diff options
| author | Adam Soltys <[email protected]> | 2026-09-22 11:23:19 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-09-22 11:27:15 -0700 |
| commit | 802eea628fb77fed305de555995cf323174b0394 (patch) | |
| tree | 2c9d1a74f5f94dda032b3c346a15f1dff2daffb4 /src/components/InvoiceData.svelte | |
| parent | 6735d9ec73949046932716dba90ebd9cd63b513d (diff) | |
| download | coinos-ui-802eea628fb77fed305de555995cf323174b0394.tar.gz coinos-ui-802eea628fb77fed305de555995cf323174b0394.zip | |
invoice: a reusable bolt12 offer has no terminal paid state
A bolt12 offer is a standing payment code. CLN derives the same offer_id
from the same (amount, description), so re-creating one hands back the
original record, whose `received` has accumulated over the offer's whole
lifetime. The invoice layout read that as "this invoice was paid" and
redirected to the success screen, so reopening a long-lived offer never
showed the QR and left no way to copy the lno.
Treat a payment as celebratory only when it arrives while the page is
open: the socket handler now passes the amount of that payment as
`?paid=<amount>`, and the layout uses it in place of the lifetime total
for reusable offers. Single-use invoices keep the existing logic, so a
partly-paid invoice still stays on the QR rather than celebrating early.
The success screen showed lifetime `received` for the same reason, which
misreported a single payment to a long-lived offer; it now renders the
amount the socket reported, which is already net of tip.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
Diffstat (limited to 'src/components/InvoiceData.svelte')
0 files changed, 0 insertions, 0 deletions
