diff --git a/app/lib/lnd/lightning.js b/app/lib/lnd/lightning.js index 67a2a75b449..0453dd8491a 100644 --- a/app/lib/lnd/lightning.js +++ b/app/lib/lnd/lightning.js @@ -89,22 +89,23 @@ class Lightning { */ subscribe(mainWindow) { this.mainWindow = mainWindow - this.subscriptions.channelGraph = subscribeToChannelGraph(this.mainWindow, this.lnd, mainLog) - this.subscriptions.invoices = subscribeToInvoices(this.mainWindow, this.lnd, mainLog) - this.subscriptions.transactions = subscribeToTransactions(this.mainWindow, this.lnd, mainLog) + + this.subscriptions.channelGraph = subscribeToChannelGraph.call(this) + this.subscriptions.invoices = subscribeToInvoices.call(this) + this.subscriptions.transactions = subscribeToTransactions.call(this) } /** * Unsubscribe from all bi-directional streams. */ unsubscribe() { + this.mainWindow = null Object.keys(this.subscriptions).forEach(subscription => { if (this.subscriptions[subscription]) { this.subscriptions[subscription].cancel() this.subscriptions[subscription] = null } }) - this.mainWindow = null } } diff --git a/app/lib/lnd/subscribe/channelgraph.js b/app/lib/lnd/subscribe/channelgraph.js index 02f30a08758..6340bb21748 100644 --- a/app/lib/lnd/subscribe/channelgraph.js +++ b/app/lib/lnd/subscribe/channelgraph.js @@ -1,14 +1,21 @@ import { status } from 'grpc' +import { mainLog } from '../../utils/log' -export default function subscribeToChannelGraph(mainWindow, lnd, log) { - const call = lnd.subscribeChannelGraph({}) +export default function subscribeToChannelGraph() { + const call = this.lnd.subscribeChannelGraph({}) - call.on('data', channelGraphData => mainWindow.send('channelGraphData', { channelGraphData })) - call.on('end', () => log.info('end')) - call.on('error', error => error.code !== status.CANCELLED && log.error(error)) - call.on('status', channelGraphStatus => - mainWindow.send('channelGraphStatus', { channelGraphStatus }) - ) + call.on('data', channelGraphData => { + if (this.mainWindow) { + this.mainWindow.send('channelGraphData', { channelGraphData }) + } + }) + call.on('end', () => mainLog.info('end')) + call.on('error', error => error.code !== status.CANCELLED && mainLog.error(error)) + call.on('status', channelGraphStatus => { + if (this.mainWindow) { + this.mainWindow.send('channelGraphStatus', { channelGraphStatus }) + } + }) return call } diff --git a/app/lib/lnd/subscribe/invoices.js b/app/lib/lnd/subscribe/invoices.js index a127c221ee6..171471dceca 100644 --- a/app/lib/lnd/subscribe/invoices.js +++ b/app/lib/lnd/subscribe/invoices.js @@ -1,15 +1,18 @@ import { status } from 'grpc' +import { mainLog } from '../../utils/log' -export default function subscribeToInvoices(mainWindow, lnd, log) { - const call = lnd.subscribeInvoices({}) +export default function subscribeToInvoices() { + const call = this.lnd.subscribeInvoices({}) call.on('data', invoice => { - log.info('INVOICE:', invoice) - mainWindow.send('invoiceUpdate', { invoice }) + mainLog.info('INVOICE:', invoice) + if (this.mainWindow) { + this.mainWindow.send('invoiceUpdate', { invoice }) + } }) - call.on('end', () => log.info('end')) - call.on('error', error => error.code !== status.CANCELLED && log.error(error)) - call.on('status', status => log.info('INVOICE STATUS:', status)) + call.on('end', () => mainLog.info('end')) + call.on('error', error => error.code !== status.CANCELLED && mainLog.error(error)) + call.on('status', status => mainLog.info('INVOICE STATUS:', status)) return call } diff --git a/app/lib/lnd/subscribe/transactions.js b/app/lib/lnd/subscribe/transactions.js index 0f143dc5086..c328abb282e 100644 --- a/app/lib/lnd/subscribe/transactions.js +++ b/app/lib/lnd/subscribe/transactions.js @@ -1,15 +1,18 @@ import { status } from 'grpc' +import { mainLog } from '../../utils/log' -export default function subscribeToTransactions(mainWindow, lnd, log) { - const call = lnd.subscribeTransactions({}) +export default function subscribeToTransactions() { + const call = this.lnd.subscribeTransactions({}) call.on('data', transaction => { - log.info('TRANSACTION:', transaction) - mainWindow.send('newTransaction', { transaction }) + mainLog.info('TRANSACTION:', transaction) + if (this.mainWindow) { + this.mainWindow.send('newTransaction', { transaction }) + } }) - call.on('end', () => log.info('end')) - call.on('error', error => error.code !== status.CANCELLED && log.error(error)) - call.on('status', status => log.info('TRANSACTION STATUS: ', status)) + call.on('end', () => mainLog.info('end')) + call.on('error', error => error.code !== status.CANCELLED && mainLog.error(error)) + call.on('status', status => mainLog.info('TRANSACTION STATUS: ', status)) return call }