diff --git a/config/daemon/fetch-windows-params.js b/config/daemon/fetch-windows-params.js index adee37f..1841cd0 100644 --- a/config/daemon/fetch-windows-params.js +++ b/config/daemon/fetch-windows-params.js @@ -6,7 +6,9 @@ import fs from 'fs'; import path from 'path'; import cp from 'child_process'; import crypto from 'crypto'; +import util from 'util'; +import eres from 'eres'; import got from 'got'; import Queue from 'p-queue'; @@ -56,20 +58,25 @@ const downloadFile = ({ file, pathToSave }): Promise<*> => new Promise((resolve, .pipe(fs.createWriteStream(pathToSave)); }); +let missingDownloadParam = false; + export default (): Promise<*> => new Promise((resolve, reject) => { const firstRunProcess = cp.spawn(path.join(getBinariesPath(), 'win', 'first-run.bat')); firstRunProcess.stdout.on('data', data => log(data.toString())); firstRunProcess.stderr.on('data', data => reject(data.toString())); - firstRunProcess.on('exit', (code, err) => { + firstRunProcess.on('exit', async (code, err) => { if (code !== 0 || err) return reject(new Error(err)); - FILES.forEach((file) => { - // TODO: Log download progress - const pathToSave = path.join(app.getPath('userData'), '..', 'ZcashParams', file.name); + await Promise.all( + FILES.map(async (file) => { + // TODO: Log download progress + const pathToSave = path.join(app.getPath('userData'), '..', 'ZcashParams', file.name); - fs.access(pathToSave, fs.constants.F_OK, (isEmpty) => { - if (isEmpty) { + const [cannotAccess] = await eres(util.promisify(fs.access)(pathToSave, fs.constants.F_OK)); + + if (cannotAccess) { + missingDownloadParam = true; queue.add(() => downloadFile({ file, pathToSave }).then(() => { log(`Download ${file.name} finished!`); })); @@ -77,8 +84,10 @@ export default (): Promise<*> => new Promise((resolve, reject) => { // TODO: Check file sha256 log(`${file.name} already is in ${pathToSave}...`); } - }); - }); + }), + ); + + if (!missingDownloadParam) return resolve(); queue.onEmpty(resolve); queue.start(); diff --git a/config/daemon/zcashd-child-process.js b/config/daemon/zcashd-child-process.js index 4756cf9..a2c784f 100644 --- a/config/daemon/zcashd-child-process.js +++ b/config/daemon/zcashd-child-process.js @@ -1,6 +1,7 @@ // @flow import cp from 'child_process'; import path from 'path'; +import os from 'os'; import processExists from 'process-exists'; /* eslint-disable-next-line import/no-extraneous-dependencies */ import isDev from 'electron-is-dev'; @@ -66,6 +67,11 @@ const runDaemon: () => Promise = () => new Promise(async (resolve }); childProcess.on('error', reject); + + if (os.platform() === 'win32') { + resolved = true; + resolve(childProcess); + } }); export default runDaemon;