aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-02-08 16:47:32 -0800
committerAdam Soltys <[email protected]>2023-02-08 16:47:32 -0800
commit12dcd267bd2d23439afcbd493fda6f9d77035c4a (patch)
treeafe187ef3bcaeb2450a5cdbae9de6669cb004721
parent7de7a87dd4f014f2a4f0aa405a6ba4a1a6c9f208 (diff)
downloadcoinos-server-12dcd267bd2d23439afcbd493fda6f9d77035c4a.tar.gz
coinos-server-12dcd267bd2d23439afcbd493fda6f9d77035c4a.zip
invoice requests
-rw-r--r--lib/invoices.js12
-rw-r--r--routes/lnurl.js7
-rw-r--r--routes/requests.js18
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) {