From b53875cf6bdf47c359139aa846c6597fa3627c87 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 20 Sep 2022 22:48:01 -0700 Subject: clightning support --- lib/sync.js | 137 +++++++++++++++++++++++++++++++----------------------------- 1 file changed, 70 insertions(+), 67 deletions(-) (limited to 'lib/sync.js') diff --git a/lib/sync.js b/lib/sync.js index 467ce107..95abb99d 100644 --- a/lib/sync.js +++ b/lib/sync.js @@ -75,82 +75,85 @@ const sync = async () => { ] }); - let { invoices } = await getInvoices({ lnd, limit: 1000 }); + let missed, invoices; + if (config.lnd) { + ({ invoices } = await getInvoices({ lnd, limit: 1000 })); + + let recent = invoices + .filter( + i => + i.is_confirmed && + differenceInDays(new Date(), new Date(i.created_at)) < 2 + ) + .map(i => ({ + amount: parseInt(i.received), + preimage: i.secret, + pr: i.request, + createdAt: new Date(i.created_at) + })); + + const twoDaysAgo = new Date(new Date().setDate(new Date().getDate() - 2)); + let settled = ( + await db.Payment.findAll({ + where: { network: "lightning", createdAt: { [Op.gt]: twoDaysAgo } }, + attributes: ["preimage"] + }) + ).map(p => p.preimage); + + missed = recent.filter(i => !settled.includes(i.preimage)); + for (let i = 0; i < missed.length; i++) { + let { amount, preimage, pr: text, createdAt } = missed[i]; + if (!text || !text.length) continue; - let recent = invoices - .filter( - i => - i.is_confirmed && - differenceInDays(new Date(), new Date(i.created_at)) < 2 - ) - .map(i => ({ - amount: parseInt(i.received), - preimage: i.secret, - pr: i.request, - createdAt: new Date(i.created_at) - })); - - const twoDaysAgo = new Date(new Date().setDate(new Date().getDate() - 2)); - let settled = ( - await db.Payment.findAll({ - where: { network: "lightning", createdAt: { [Op.gt]: twoDaysAgo } }, - attributes: ["preimage"] - }) - ).map(p => p.preimage); - - let missed = recent.filter(i => !settled.includes(i.preimage)); - for (let i = 0; i < missed.length; i++) { - let { amount, preimage, pr: text, createdAt } = missed[i]; - if (!text || !text.length) continue; - - try { - let invoice = await db.Invoice.findOne({ - where: { text }, - include: { - model: db.User, - as: "user" - } - }); - - if (invoice && invoice.user_id) { - let account = await db.Account.findOne({ - where: { - user_id: invoice.user_id, - asset: config.liquid.btcasset, - pubkey: null + try { + let invoice = await db.Invoice.findOne({ + where: { text }, + include: { + model: db.User, + as: "user" } }); - if (account) { - let payment = await db.Payment.create({ - account_id: account.id, - user_id: invoice.user_id, - hash: text, - amount, - currency: invoice.currency, - preimage, - rate: invoice.rate, - received: true, - confirmed: true, - network: "lightning", - tip: invoice.tip, - invoice_id: invoice.id, - createdAt, - updatedAt: createdAt + if (invoice && invoice.user_id) { + let account = await db.Account.findOne({ + where: { + user_id: invoice.user_id, + asset: config.liquid.btcasset, + pubkey: null + } }); - await account.increment({ balance: amount }); + if (account) { + let payment = await db.Payment.create({ + account_id: account.id, + user_id: invoice.user_id, + hash: text, + amount, + currency: invoice.currency, + preimage, + rate: invoice.rate, + received: true, + confirmed: true, + network: "lightning", + tip: invoice.tip, + invoice_id: invoice.id, + createdAt, + updatedAt: createdAt + }); + + await account.increment({ balance: amount }); - l("lightning missing from account", account.id, amount); + l("lightning missing from account", account.id, amount); + } } + } catch (e) { + err( + "problem syncing lightning payment", + JSON.stringify(missed[i]), + e.message, + e.stack + ); } - } catch (e) { - err( - "problem syncing lightning payment", - JSON.stringify(missed[i]), - e.message, - e.stack - ); } } -- cgit v1.2.3