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:flowtype/recommended",
"plugin:import/errors", "plugin:import/errors",
"plugin:import/warnings", "plugin:import/warnings",
"plugin:jsx-a11y/strict" "plugin:jsx-a11y/strict",
"plugin:promise/recommended"
], ],
"env": { "env": {
"browser": true, "browser": true,

60
app/lnd/methods/channelController.js

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

30
app/lnd/methods/index.js

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

Loading…
Cancel
Save