From f256dfa568f18a0e4af42d32f0833e9d428e2d42 Mon Sep 17 00:00:00 2001 From: georgelima Date: Tue, 4 Dec 2018 00:34:41 -0200 Subject: [PATCH] feature: use async/await instead of promises --- config/daemon/zcashd-child-process.js | 53 ++++++++++++++------------- config/electron.js | 22 +++++------ 2 files changed, 39 insertions(+), 36 deletions(-) diff --git a/config/daemon/zcashd-child-process.js b/config/daemon/zcashd-child-process.js index 070a73b..c794843 100644 --- a/config/daemon/zcashd-child-process.js +++ b/config/daemon/zcashd-child-process.js @@ -5,6 +5,7 @@ import processExists from 'process-exists'; /* eslint-disable-next-line import/no-extraneous-dependencies */ import isDev from 'electron-is-dev'; import type { ChildProcess } from 'child_process'; +import eres from 'eres'; import getBinariesPath from './get-binaries-path'; import getOsFolder from './get-os-folder'; @@ -14,36 +15,38 @@ import log from './logger'; const getDaemonOptions = () => (isDev ? ['-daemon', '-testnet'] : ['-daemon']); -const runDaemon: () => Promise = () => new Promise((resolve, reject) => { +const runDaemon: () => Promise = () => new Promise(async (resolve, reject) => { const processName = path.join(getBinariesPath(), getOsFolder(), getDaemonName()); - fetchParams() - .then(() => { - log('Fetch Params finished!'); - processExists(processName).then((isRunning) => { - if (isRunning) { - log('Already is running!'); - resolve(); - } else { - const childProcess = cp.spawn(processName, getDaemonOptions()); + const [err] = await eres(fetchParams()); - childProcess.stdout.on('data', (data) => { - log(data.toString()); - resolve(childProcess); - }); + if (err) { + log('Something went wrong fetching params: ', err); + return reject(new Error(err)); + } - childProcess.stderr.on('data', (data) => { - log(data.toString()); - reject(new Error(data.toString())); - }); + log('Fetch Params finished!'); - childProcess.on('error', reject); - } - }); - }) - .catch((err) => { - log('Something went wrong fetching params: ', err); - }); + const [, isRunning] = await eres(processExists(processName)); + + if (isRunning) { + log('Already is running!'); + return resolve(); + } + + const childProcess = cp.spawn(processName, getDaemonOptions()); + + childProcess.stdout.on('data', (data) => { + log(data.toString()); + resolve(childProcess); + }); + + childProcess.stderr.on('data', (data) => { + log(data.toString()); + reject(new Error(data.toString())); + }); + + childProcess.on('error', reject); }); export default runDaemon; diff --git a/config/electron.js b/config/electron.js index 072e06e..ab18c7d 100644 --- a/config/electron.js +++ b/config/electron.js @@ -1,4 +1,6 @@ // @flow +import '@babel/polyfill'; + import path from 'path'; /* eslint-disable import/no-extraneous-dependencies */ @@ -7,6 +9,7 @@ import { autoUpdater } from 'electron-updater'; import isDev from 'electron-is-dev'; /* eslint-enable import/no-extraneous-dependencies */ import type { BrowserWindow as BrowserWindowType } from 'electron'; +import eres from 'eres'; import { registerDebugShortcut } from '../utils/debug-shortcut'; import runDaemon from './daemon/zcashd-child-process'; import zcashLog from './daemon/logger'; @@ -63,15 +66,14 @@ const createWindow = () => { exports.app = app; }; -app.on('ready', () => { +/* eslint-disable-next-line consistent-return */ +app.on('ready', async () => { createWindow(); - runDaemon() - .then((proc) => { - if (proc) { - zcashDaemon = proc; - } - }) - .catch(zcashLog); + const [err, proc] = await eres(runDaemon()); + + if (err || !proc) return zcashLog(err); + + zcashDaemon = proc; }); app.on('activate', () => { if (mainWindow === null) createWindow(); @@ -80,7 +82,5 @@ app.on('window-all-closed', () => { if (process.platform !== 'darwin') app.quit(); }); app.on('before-quit', () => { - if (zcashDaemon) { - zcashDaemon.kill('SIGINT'); - } + if (zcashDaemon) zcashDaemon.kill('SIGINT'); });