Merge pull request #23 from ivanacostarubio/yuka

Shows QR code first
This commit is contained in:
Kieran 2023-01-12 09:40:27 +00:00 committed by GitHub
commit e4b0d342c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 6 deletions

View File

@ -1,15 +1,18 @@
import "./Invoice.css";
import { useState } from "react";
import { decode as invoiceDecode } from "light-bolt11-decoder";
import { useMemo } from "react";
import NoteTime from "./NoteTime";
import LNURLTip from "./LNURLTip";
export default function Invoice(props) {
const invoice = props.invoice;
const [showInvoice, setShowInvoice] = useState(false);
const info = useMemo(() => {
try {
let parsed = invoiceDecode(invoice);
let amount = parseInt(parsed.sections.find(a => a.name === "amount")?.value);
let timestamp = parseInt(parsed.sections.find(a => a.name === "timestamp")?.value);
let expire = parseInt(parsed.sections.find(a => a.name === "expiry")?.value);
@ -34,25 +37,30 @@ export default function Invoice(props) {
<>
<h4> Invoice for {info?.amount?.toLocaleString()} sats</h4>
<p>{info?.description}</p>
{showInvoice && <LNURLTip lnInvoice={invoice} show={true} /> }
</>
)
} else {
return (
<>
<h4> Invoice for {info?.amount?.toLocaleString()} sats</h4>
{showInvoice && <LNURLTip lnInvoice={invoice} show={true} /> }
</>
)
}
}
return (
<>
<div className="note-invoice flex">
<div className="f-grow flex f-col">
{header()}
{info?.expire ? <small>{info?.expired ? "Expired" : "Expires"} <NoteTime from={info.expire * 1000} /></small> : null}
</div>
{info?.expired ? <div className="btn">Expired</div> :
<div className="btn" onClick={() => window.open(`lightning:${invoice}`)}>Pay</div>}
{info?.expired ? <div className="btn">Expired</div> : <div className="btn" onClick={(e) => setShowInvoice(true)}>Pay</div> }
</div>
</>
)
}

View File

@ -9,6 +9,7 @@ export default function LNURLTip(props) {
const onClose = props.onClose || (() => { });
const service = props.svc;
const show = props.show || false;
const lnInvoice = props.lnInvoice
const amounts = [50, 100, 500, 1_000, 5_000, 10_000];
const [payService, setPayService] = useState("");
const [amount, setAmount] = useState(0);
@ -19,7 +20,7 @@ export default function LNURLTip(props) {
const [success, setSuccess] = useState(null);
useEffect(() => {
if (show) {
if (show && !lnInvoice) {
loadService()
.then(a => setPayService(a))
.catch(() => setError("Failed to load LNURL service"));
@ -165,7 +166,7 @@ export default function LNURLTip(props) {
function payInvoice() {
if(success) return null;
const pr = invoice.pr;
const pr = lnInvoice ? lnInvoice : invoice.pr;
return (
<>
<div className="invoice">