Minor performance fixes and refactoring
This commit is contained in:
parent
df7c29e0e6
commit
a1b55ff65c
1 changed files with 34 additions and 23 deletions
|
|
@ -30,8 +30,35 @@ const ordersProcessed = new Set()
|
|||
* @typedef {import('../SimpleGUN').UserGUNNode} UserGUNNode
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {object} InvoiceRequest
|
||||
* @prop {number} expiry
|
||||
* @prop {string} memo
|
||||
* @prop {number} value
|
||||
* @prop {boolean} private
|
||||
*/
|
||||
|
||||
let currentOrderAddr = ''
|
||||
|
||||
/** @param {InvoiceRequest} invoiceReq */
|
||||
const _addInvoice = invoiceReq =>
|
||||
new Promise((resolve, rej) => {
|
||||
const {
|
||||
services: { lightning }
|
||||
} = LightningServices
|
||||
|
||||
lightning.addInvoice(invoiceReq, (
|
||||
/** @type {any} */ error,
|
||||
/** @type {{ payment_request: string }} */ response
|
||||
) => {
|
||||
if (error) {
|
||||
rej(error)
|
||||
} else {
|
||||
resolve(response.payment_request)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* @param {string} addr
|
||||
* @param {ISEA} SEA
|
||||
|
|
@ -66,12 +93,12 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
|
|||
)} -- addr: ${addr}`
|
||||
)
|
||||
|
||||
const alreadyAnswered = getUser()
|
||||
const alreadyAnswered = await getUser()
|
||||
.get(Key.ORDER_TO_RESPONSE)
|
||||
.get(orderID)
|
||||
.then()
|
||||
|
||||
if (await alreadyAnswered) {
|
||||
if (alreadyAnswered) {
|
||||
logger.info('this order is already answered, quitting')
|
||||
return
|
||||
}
|
||||
|
|
@ -79,7 +106,10 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
|
|||
const senderEpub = await Utils.pubToEpub(order.from)
|
||||
const secret = await SEA.secret(senderEpub, getUser()._.sea)
|
||||
|
||||
const decryptedAmount = await SEA.decrypt(order.amount, secret)
|
||||
const [decryptedAmount, memo] = await Promise.all([
|
||||
SEA.decrypt(order.amount, secret),
|
||||
SEA.decrypt(order.memo, secret)
|
||||
])
|
||||
|
||||
const amount = Number(decryptedAmount)
|
||||
|
||||
|
|
@ -101,8 +131,6 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
|
|||
)
|
||||
}
|
||||
|
||||
const memo = await SEA.decrypt(order.memo, secret)
|
||||
|
||||
const invoiceReq = {
|
||||
expiry: 36000,
|
||||
memo,
|
||||
|
|
@ -117,22 +145,7 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
|
|||
/**
|
||||
* @type {string}
|
||||
*/
|
||||
const invoice = await new Promise((resolve, rej) => {
|
||||
const {
|
||||
services: { lightning }
|
||||
} = LightningServices
|
||||
|
||||
lightning.addInvoice(invoiceReq, (
|
||||
/** @type {any} */ error,
|
||||
/** @type {{ payment_request: string }} */ response
|
||||
) => {
|
||||
if (error) {
|
||||
rej(error)
|
||||
} else {
|
||||
resolve(response.payment_request)
|
||||
}
|
||||
})
|
||||
})
|
||||
const invoice = await _addInvoice(invoiceReq)
|
||||
|
||||
logger.info(
|
||||
'onOrders() -> Successfully created the invoice, will now encrypt it'
|
||||
|
|
@ -154,7 +167,6 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
|
|||
getUser()
|
||||
.get(Key.ORDER_TO_RESPONSE)
|
||||
.get(orderID)
|
||||
//@ts-ignore
|
||||
.put(orderResponse, ack => {
|
||||
if (ack.err && typeof ack.err !== 'number') {
|
||||
rej(
|
||||
|
|
@ -184,7 +196,6 @@ const listenerForAddr = (addr, SEA) => async (order, orderID) => {
|
|||
getUser()
|
||||
.get(Key.ORDER_TO_RESPONSE)
|
||||
.get(orderID)
|
||||
//@ts-ignore
|
||||
.put(orderResponse, ack => {
|
||||
if (ack.err && typeof ack.err !== 'number') {
|
||||
logger.error(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue