diff options
| author | Adam Soltys <[email protected]> | 2023-03-14 15:07:00 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-03-14 15:07:00 -0700 |
| commit | 3afce799436c67cf2f4d14b433d81810654d65b0 (patch) | |
| tree | b805edbe29f40304cf4165d88ccf2cbfd38f9df7 | |
| parent | 5d42bd231f4f42235bfc53d7561ba9dfb0dc6697 (diff) | |
| download | coinos-server-3afce799436c67cf2f4d14b433d81810654d65b0.tar.gz coinos-server-3afce799436c67cf2f4d14b433d81810654d65b0.zip | |
check previous transactions
| -rw-r--r-- | routes/payments.js | 60 |
1 files changed, 42 insertions, 18 deletions
diff --git a/routes/payments.js b/routes/payments.js index a180d0a3..9d8d9883 100644 --- a/routes/payments.js +++ b/routes/payments.js @@ -12,6 +12,27 @@ import got from "got"; import bc from "$lib/bitcoin"; import ln from "$lib/ln"; +let seen = []; +let catchUp = async () => { + let txns = await bc.listTransactions("*", 50); + txns = txns.filter(tx => tx.category === "receive" && tx.confirmations > 0); + for (let { txid } of txns) { + try { + if (seen.includes(txid)) continue; + await got.post(`http://localhost:${process.env.PORT || 3119}/bitcoin`, { + json: { txid, wallet: config.bitcoin.wallet } + }); + + seen.push(txid); + } catch (e) { + console.log(e.message); + } + } + setTimeout(catchUp, 2000); +}; + +catchUp(); + export default { async create({ body, user }, res) { try { @@ -32,7 +53,7 @@ export default { await got .post(`${config.classic}/admin/credit`, { json: { username, amount, source }, - headers: { authorization: `Bearer ${config.admin}` }, + headers: { authorization: `Bearer ${config.admin}` } }) .json(); } else if (payreq) { @@ -101,7 +122,7 @@ export default { let payments = (await db.lRange(`${id}:payments`, 0, -1)) || []; payments = ( await Promise.all( - payments.map(async (id) => { + payments.map(async id => { let p = await g(`payment:${id}`); if (p.created < start || p.created > end) return; if (p.type === types.internal) p.with = await g(`user:${p.ref}`); @@ -109,7 +130,7 @@ export default { }) ) ) - .filter((p) => p) + .filter(p => p) .sort((a, b) => b.created - a.created); let total = payments.length; @@ -136,7 +157,7 @@ export default { let twoWeeksAgo = new Date(new Date().setDate(new Date().getDate() - 14)); let decoded = await ln.decodepay(payreq); let { msatoshi, payee } = decoded; - let node = nodes.find((n) => n.nodeid === payee); + let node = nodes.find(n => n.nodeid === payee); let alias = node ? node.alias : payee.substr(0, 12); res.send({ alias, amount: Math.round(msatoshi / 1000) }); @@ -146,13 +167,13 @@ export default { let amount = await g(`pot:${name}`); if (!amount) return bail(res, "pot not found"); let payments = (await db.lRange(`pot:${name}:payments`, 0, -1)) || []; - payments = await Promise.all(payments.map((hash) => g(`payment:${hash}`))); + payments = await Promise.all(payments.map(hash => g(`payment:${hash}`))); await Promise.all( - payments.map(async (p) => (p.user = await g(`user:${p.uid}`))) + payments.map(async p => (p.user = await g(`user:${p.uid}`))) ); - payments = payments.filter((p) => p); + payments = payments.filter(p => p); res.send({ amount, payments }); }, @@ -160,13 +181,16 @@ export default { amount = parseInt(amount); await t(`pot:${name}`, async (balance, db) => { if (balance < amount) fail("Insufficient funds"); - await db.multi().decrBy(`pot:${name}`, amount).exec(); + await db + .multi() + .decrBy(`pot:${name}`, amount) + .exec(); }); let hash = v4(); await s(`invoice:${hash}`, { uid: user.id, - received: 0, + received: 0 }); let payment = await credit(hash, amount, "", name, types.pot); @@ -226,7 +250,7 @@ export default { let tx = await bc.fundRawTransaction(raw, { feeRate, subtractFeeFromOutputs, - replaceable, + replaceable }); let fee = sats(tx.fee); @@ -269,7 +293,7 @@ export default { for (let { scriptPubKey: { address }, - value, + value } of tx.vout) { total += sats(value); if ( @@ -304,13 +328,13 @@ export default { "card[number]": number, "card[exp_month]": month, "card[exp_year]": year, - "card[cvc]": cvc, + "card[cvc]": cvc }; let { id: source } = await got .post(`${stripe}/tokens`, { form, - username, + username }) .json(); @@ -319,13 +343,13 @@ export default { amount, currency, source, - description: "starter coupon", + description: "starter coupon" }; let r = await got .post(`${stripe}/charges`, { form, - username, + username }) .json(); @@ -335,7 +359,7 @@ export default { let memo = "stripe"; await s(`invoice:${hash}`, { uid: user.id, - received: 0, + received: 0 }); amount = sats(amount / store.rates[currency]); let uid = await g("user:coinos"); @@ -355,7 +379,7 @@ export default { "estimatesmartfee", "echo", "getblockchaininfo", - "getnetworkinfo", + "getnetworkinfo" ]; if (!whitelist.includes(method)) fail("unsupported method"); @@ -373,5 +397,5 @@ export default { } catch (e) { bail(res, e.message); } - }, + } }; |
