stacker.news/components/invoice.js

45 lines
1.1 KiB
JavaScript
Raw Normal View History

import AccordianItem from './accordian-item'
2023-01-18 18:49:20 +00:00
import Qr from './qr'
import { numWithUnits } from '../lib/format'
2021-05-06 21:15:22 +00:00
export function Invoice ({ invoice }) {
2021-05-13 13:28:38 +00:00
let variant = 'default'
2021-05-11 15:52:50 +00:00
let status = 'waiting for you'
let webLn = true
2021-05-11 15:52:50 +00:00
if (invoice.confirmedAt) {
2021-05-13 13:28:38 +00:00
variant = 'confirmed'
status = `${numWithUnits(invoice.satsReceived, { abbreviate: false })} deposited`
webLn = false
2021-05-11 15:52:50 +00:00
} else if (invoice.cancelled) {
2021-05-13 13:28:38 +00:00
variant = 'failed'
2021-05-11 15:52:50 +00:00
status = 'cancelled'
webLn = false
2021-05-11 15:52:50 +00:00
} else if (invoice.expiresAt <= new Date()) {
2021-05-13 13:28:38 +00:00
variant = 'failed'
2021-05-11 15:52:50 +00:00
status = 'expired'
webLn = false
2021-05-11 15:52:50 +00:00
}
2021-05-06 21:15:22 +00:00
const { nostr } = invoice
return (
<>
<Qr webLn={webLn} value={invoice.bolt11} statusVariant={variant} status={status} />
<div className='w-100'>
{nostr
? <AccordianItem
header='Nostr Zap Request'
body={
<pre>
<code>
{JSON.stringify(nostr, null, 2)}
</code>
</pre>
}
/>
: null}
</div>
</>
)
2021-05-06 21:15:22 +00:00
}