From 12dcd267bd2d23439afcbd493fda6f9d77035c4a Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 8 Feb 2023 16:47:32 -0800 Subject: invoice requests --- lib/invoices.js | 12 +++++++++++- routes/lnurl.js | 7 +------ routes/requests.js | 18 +++++++++++++++--- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/lib/invoices.js b/lib/invoices.js index 5969ac59..bab48515 100644 --- a/lib/invoices.js +++ b/lib/invoices.js @@ -31,7 +31,17 @@ export let generate = async ({ invoice, user, sender, memo }) => { let hash, text; if (type === types.lightning) { let amt = amount ? `${amount + tip}sat` : "any"; - let r = await ln.invoice(amt, new Date(), memo || "", 3600); + let r = await ln.invoice( + amt, + new Date(), + memo || "", + 3600, + undefined, + undefined, + undefined, + undefined, + true + ); hash = r.payment_hash; text = r.bolt11; diff --git a/routes/lnurl.js b/routes/lnurl.js index 5494a5b0..687dab6e 100644 --- a/routes/lnurl.js +++ b/routes/lnurl.js @@ -86,17 +86,12 @@ export default { ["text/identifier", `${username}@${host}`] ]); - let memo = crypto - .createHash("sha256") - .update(Buffer.from(metadata, "utf8")) - .digest("hex"); - ({ text: pr } = await generate({ invoice: { amount: Math.round(amount / 1000), type: types.lightning }, - memo, + memo: metadata, user })); diff --git a/routes/requests.js b/routes/requests.js index 80270b2b..11bf9a36 100644 --- a/routes/requests.js +++ b/routes/requests.js @@ -17,10 +17,8 @@ export default { try { const day = new Date(new Date().setDate(new Date().getDate() - 1)); - let invoices = await db.lRange(`${id}:invoices`, 0, -1); let requests = await db.lRange(`${id}:requests`, 0, -1); - invoices = await Promise.all(invoices.map(id => g(`invoice:${id}`))); requests = await Promise.all(requests.map(id => g(`request:${id}`))); requests = await Promise.all( @@ -32,7 +30,21 @@ export default { ); let sent = requests.filter(r => r.requester_id === id); - let received = requests.filter(r => r.recipient_id === id); + + let received = requests + .filter(r => r.recipient_id === id) + .filter(r => !r.invoice_id); + + let invoices = []; + for (let r of sent) { + if (!r.invoice_id) continue; + + let invoice = await g(`invoice:${r.invoice_id}`); + if (!invoice) continue; + + invoice.request = r; + if (invoice.amount < invoice.received) invoices.push(invoice); + } res.send({ invoices, sent, received }); } catch (e) { -- cgit v1.2.3