lightning
Version:
Lightning Network client library
63 lines (49 loc) • 1.66 kB
JavaScript
const asyncAuto = require('async/auto');
const {returnResult} = require('asyncjs-util');
const {isLnd} = require('./../../lnd_requests');
const action = 0;
const errorUnimplemented = 'unknown service peersrpc.Peers';
const method = 'updateNodeAnnouncement';
const type = 'peers';
/** Add an advertised feature to the graph node announcement
Note: this method is not supported in LND versions 0.14.5 and below
Requires LND built with `peersrpc` build tag
Requires `peers:write` permissions
{
feature: <BOLT 09 Feature Bit Number>
lnd: <Authenticated LND API Object>
}
@returns via cbk or Promise
*/
module.exports = ({feature, lnd}, cbk) => {
return new Promise((resolve, reject) => {
return asyncAuto({
// Check arguments
validate: cbk => {
if (!feature) {
return cbk([400, 'ExpectedFeatureToAddAnnouncementFeature']);
}
if (!isLnd({lnd, method, type})) {
return cbk([400, 'ExpectedLndToAddNodeAnnouncementFeature']);
}
return cbk();
},
// Update the node features with the updated feature
updateFeatures: ['validate', ({}, cbk) => {
return lnd[type][method]({
feature_updates: [{action, feature_bit: feature}],
},
(err, res) => {
if (!!err && err.details === errorUnimplemented) {
return cbk([400, 'ExpectedPeersRpcLndBuildTagToUpdateFeatures']);
}
if (!!err) {
return cbk([503, 'UnexpectedErrorUpdatingNodeFeatures', {err}]);
}
return cbk();
});
}],
},
returnResult({reject, resolve}, cbk));
});
};