Browse Source

fix(eslint-promise): Enable the recommended eslint-plugin-promise config

And fix related errors.

I extracted ensurePeerConnected from connectAndOpen to solve some code
duplication.
renovate/lint-staged-8.x
Ben Woosley 7 years ago
parent
commit
313078cfc6
No known key found for this signature in database GPG Key ID: 6EE5F3785F78B345
  1. 3
      .eslintrc
  2. 60
      app/lnd/methods/channelController.js
  3. 30
      app/lnd/methods/index.js

3
.eslintrc

@ -10,7 +10,8 @@
"plugin:flowtype/recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:jsx-a11y/strict"
"plugin:jsx-a11y/strict",
"plugin:promise/recommended"
],
"env": {
"browser": true,

60
app/lnd/methods/channelController.js

@ -5,6 +5,17 @@ import pushopenchannel from '../push/openchannel'
const BufferUtil = bitcore.util.buffer
function ensurePeerConnected(lnd, meta, pubkey, host) {
return listPeers(lnd, meta)
.then(({ peers }) => {
const peer = find(peers, { pub_key: pubkey })
if (peer) {
return peer
}
return connectPeer(lnd, meta, { pubkey, host })
})
}
/**
* Attempts to open a singly funded channel specified in the request to a remote peer.
* @param {[type]} lnd [description]
@ -14,40 +25,23 @@ const BufferUtil = bitcore.util.buffer
*/
export function connectAndOpen(lnd, meta, event, payload) {
const { pubkey, host, localamt } = payload
const channelPayload = {
node_pubkey: BufferUtil.hexToBuffer(pubkey),
local_funding_amount: Number(localamt)
}
return new Promise((resolve, reject) => {
listPeers(lnd, meta)
.then(({ peers }) => {
const peer = find(peers, { pub_key: pubkey })
if (peer) {
const call = lnd.openChannel(channelPayload, meta)
call.on('data', data => event.sender.send('pushchannelupdated', { pubkey, data }))
call.on('error', error => event.sender.send('pushchannelerror', { pubkey, error: error.toString() }))
} else {
connectPeer(lnd, meta, { pubkey, host })
.then(() => {
const call = lnd.openChannel(channelPayload, meta)
call.on('data', data => event.sender.send('pushchannelupdated', { pubkey, data }))
call.on('error', error => event.sender.send('pushchannelerror', { pubkey, error: error.toString() }))
})
.catch((err) => {
event.sender.send('pushchannelerror', { pubkey, error: err.toString() })
reject(err)
})
}
})
.catch((err) => {
event.sender.send('pushchannelerror', { pubkey, error: err.toString() })
reject(err)
})
})
return ensurePeerConnected(lnd, meta, pubkey, host)
.then(() => {
const call = lnd.openChannel({
node_pubkey: BufferUtil.hexToBuffer(pubkey),
local_funding_amount: Number(localamt)
}, meta)
call.on('data', data => event.sender.send('pushchannelupdated', { pubkey, data }))
call.on('error', error => event.sender.send('pushchannelerror', { pubkey, error: error.toString() }))
return call
})
.catch((err) => {
event.sender.send('pushchannelerror', { pubkey, error: err.toString() })
throw err
})
}
/**

30
app/lnd/methods/index.js

@ -25,6 +25,7 @@ export default function (lnd, meta, event, msg, data) {
.then((infoData) => {
event.sender.send('receiveInfo', infoData)
event.sender.send('receiveCryptocurrency', infoData.chains[0])
return infoData
})
.catch(() => event.sender.send('infoFailed'))
break
@ -42,13 +43,15 @@ export default function (lnd, meta, event, msg, data) {
case 'getInvoiceAndQueryRoutes':
// Data looks like { pubkey: String, amount: Number }
invoicesController.getInvoice(lnd, meta, { pay_req: data.payreq })
.then((invoiceData) => {
networkController.queryRoutes(lnd, meta, { pubkey: invoiceData.destination, amount: invoiceData.num_satoshis })
.then((routes) => {
event.sender.send('receiveInvoiceAndQueryRoutes', routes)
})
.catch(error => console.log('getInvoiceAndQueryRoutes queryRoutes error: ', error))
})
.then(invoiceData =>
networkController.queryRoutes(lnd, meta, {
pubkey: invoiceData.destination,
amount: invoiceData.num_satoshis
})
)
.then(routes =>
event.sender.send('receiveInvoiceAndQueryRoutes', routes)
)
.catch(error => console.log('getInvoiceAndQueryRoutes invoice error: ', error))
break
case 'newaddress':
@ -106,6 +109,7 @@ export default function (lnd, meta, event, msg, data) {
Promise.all([walletController.walletBalance, channelController.channelBalance].map(func => func(lnd, meta)))
.then((balance) => {
event.sender.send('receiveBalance', { walletBalance: balance[0].total_balance, channelBalance: balance[1].balance })
return balance
})
.catch(error => console.log('balance error: ', error))
break
@ -132,9 +136,11 @@ export default function (lnd, meta, event, msg, data) {
// Payment looks like { payment_preimage: Buffer, payment_route: Object }
// { paymentRequest } = data
paymentsController.sendPaymentSync(lnd, meta, data)
.then(({ payment_route }) => {
.then((payment) => {
const { payment_route } = payment
console.log('payinvoice success: ', payment_route)
event.sender.send('paymentSuccessful', Object.assign(data, { payment_route }))
return payment
})
.catch(({ error }) => {
console.log('error: ', error)
@ -158,6 +164,7 @@ export default function (lnd, meta, event, msg, data) {
.then((channel) => {
console.log('CHANNEL: ', channel)
event.sender.send('channelSuccessful', { channel })
return channel
})
.catch(error => console.log('openChannel error: ', error))
break
@ -168,6 +175,7 @@ export default function (lnd, meta, event, msg, data) {
.then((result) => {
console.log('CLOSE CHANNEL: ', result)
event.sender.send('closeChannelSuccessful')
return result
})
.catch(error => console.log('closeChannel error: ', error))
break
@ -175,9 +183,11 @@ export default function (lnd, meta, event, msg, data) {
// Returns a peer_id. Pass the pubkey, host and peer_id so we can add a new peer to the list
// { pubkey, host } = data
peersController.connectPeer(lnd, meta, data)
.then(({ peer_id }) => {
.then((peer) => {
const { peer_id } = peer
console.log('peer_id: ', peer_id)
event.sender.send('connectSuccess', { pub_key: data.pubkey, address: data.host, peer_id })
return peer
})
.catch((error) => {
event.sender.send('connectFailure', { error: error.toString() })
@ -191,6 +201,7 @@ export default function (lnd, meta, event, msg, data) {
.then(() => {
console.log('pubkey: ', data.pubkey)
event.sender.send('disconnectSuccess', { pubkey: data.pubkey })
return null
})
.catch(error => console.log('disconnectPeer error: ', error))
break
@ -201,6 +212,7 @@ export default function (lnd, meta, event, msg, data) {
.then((channelData) => {
console.log('connectAndOpen data: ', channelData)
// event.sender.send('connectSuccess', { pub_key: data.pubkey, address: data.host, peer_id })
return channelData
})
.catch((error) => {
// event.sender.send('connectFailure', { error: error.toString() })

Loading…
Cancel
Save