mirror of
https://github.com/alexbosworth/balanceofsatoshis.git
synced 2026-08-13 12:33:37 +02:00
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
const asyncAuto = require('async/auto');
|
|
const {createInvoice} = require('ln-service');
|
|
const {returnResult} = require('asyncjs-util');
|
|
|
|
const encodeTrigger = require('./encode_trigger');
|
|
|
|
const daysAsMs = days => Number(days) * 1000 * 60 * 60 * 24;
|
|
const defaultTriggerDays = 365;
|
|
const futureDate = ms => new Date(Date.now() + ms).toISOString();
|
|
|
|
/** Create a connectivity with peer trigger
|
|
|
|
{
|
|
id: <Node Id Public Key Hex String>
|
|
lnd: <Authenticated LND API Object>
|
|
}
|
|
|
|
@returns via cbk or Promise
|
|
*/
|
|
module.exports = ({id, lnd}, cbk) => {
|
|
return new Promise((resolve, reject) => {
|
|
return asyncAuto({
|
|
// Check arguments
|
|
validate: cbk => {
|
|
if (!id) {
|
|
return cbk([400, 'ExpectedNodeIdToCreateConnectivityTrigger']);
|
|
}
|
|
|
|
if (!lnd) {
|
|
return cbk([400, 'ExpectedLndToCreateConnectivityTrigger']);
|
|
}
|
|
|
|
return cbk();
|
|
},
|
|
|
|
// Encode the trigger
|
|
description: ['validate', ({}, cbk) => {
|
|
try {
|
|
const {encoded} = encodeTrigger({connectivity: {id}});
|
|
|
|
return cbk(null, encoded);
|
|
} catch (err) {
|
|
return cbk([400, err.message]);
|
|
}
|
|
}],
|
|
|
|
// Add the trigger invoice
|
|
create: ['description', ({description}, cbk) => {
|
|
return createInvoice({
|
|
description,
|
|
lnd,
|
|
expires_at: futureDate(daysAsMs(defaultTriggerDays)),
|
|
},
|
|
cbk);
|
|
}],
|
|
},
|
|
returnResult({reject, resolve}, cbk));
|
|
});
|
|
};
|