From 6d3fd0464356d22ace37ee6777f6401df8f6b559 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 30 Nov 2022 12:02:06 -0800 Subject: conversion requests and lightning payment on liquid confirmation --- routes/invoices.js | 9 +++++++++ routes/liquid/receive.js | 17 ++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'routes') diff --git a/routes/invoices.js b/routes/invoices.js index 7fa82afb..86836295 100644 --- a/routes/invoices.js +++ b/routes/invoices.js @@ -207,3 +207,12 @@ app.post( let { network, username } = req.params; } ); + +app.post("/conversion", + async (req, res, next) => { + let { invoice_id, text } = req.body; + + let conversion = await db.Conversion.create({ invoice_id, text }); + res.send(conversion); + } +); diff --git a/routes/liquid/receive.js b/routes/liquid/receive.js index 718feba5..2554904d 100644 --- a/routes/liquid/receive.js +++ b/routes/liquid/receive.js @@ -14,6 +14,7 @@ import bitcoin from "bitcoinjs-lib"; import liquidJs from "liquidjs-lib"; import { l, err, warn } from "$lib/logging"; import lq from "$lib/liquid"; +import sendLightning from "$lib/send"; const { Block, networks, Transaction } = liquidJs; @@ -317,7 +318,7 @@ setInterval(async () => { for (let i = 0; i < arr.length; i++) { const hash = arr[i]; - let account, invoice, address, user, total, p; + let account, invoice, address, user, total, p, conversions; await db.transaction(async transaction => { p = await db.Payment.findOne({ where: { hash, confirmed: 0, received: 1 }, @@ -344,6 +345,7 @@ setInterval(async () => { if (p && p.account) { ({ account, invoice } = p); + conversions = await invoice.getConversions(); total = p.amount + p.tip; p.confirmed = 1; await account.save({ transaction }); @@ -381,6 +383,17 @@ setInterval(async () => { delete queue[hash]; }); + user.account = p.account; + + console.log("CONVERSIONS", conversions.length) + + for (let i = 0; i < conversions.length; i++) { + console.log("sending lightning"); + let conversion = conversions[i]; + let result = await sendLightning(p.amount, "", conversion.text, user); + console.log("RESULT", result); + } + let c = store.convert[address]; if (address && c && p.account.asset === network.assetHash) { l( @@ -390,8 +403,6 @@ setInterval(async () => { user.username ); - user.account = p.account; - sendLiquid({ address: c.address, amount: total - 100, -- cgit v1.2.3