From a885d8a030222244acd66c7895cd5585f51680a6 Mon Sep 17 00:00:00 2001 From: Byron Igoe Date: Tue, 1 May 2018 09:40:51 -0400 Subject: [PATCH 1/4] Fixes https://github.com/atom/atom/issues/17013 by creating the recovery directory --- src/main-process/file-recovery-service.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main-process/file-recovery-service.js b/src/main-process/file-recovery-service.js index eef84089d..9c2374b10 100644 --- a/src/main-process/file-recovery-service.js +++ b/src/main-process/file-recovery-service.js @@ -2,6 +2,7 @@ const {dialog} = require('electron') const crypto = require('crypto') const Path = require('path') const fs = require('fs-plus') +const mkdirp = require('mkdirp') module.exports = class FileRecoveryService { @@ -146,6 +147,7 @@ async function tryStatFile (path) { } async function copyFile (source, destination, mode) { + mkdirp.sync(path.dirname(destination)); return new Promise((resolve, reject) => { const readStream = fs.createReadStream(source) readStream From f17add20c160791867782d5eacbd786fef618ed9 Mon Sep 17 00:00:00 2001 From: Byron Igoe Date: Tue, 1 May 2018 10:42:51 -0400 Subject: [PATCH 2/4] Cleaned up --- src/main-process/file-recovery-service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main-process/file-recovery-service.js b/src/main-process/file-recovery-service.js index 9c2374b10..d1750ff9e 100644 --- a/src/main-process/file-recovery-service.js +++ b/src/main-process/file-recovery-service.js @@ -147,7 +147,7 @@ async function tryStatFile (path) { } async function copyFile (source, destination, mode) { - mkdirp.sync(path.dirname(destination)); + mkdirp.sync(Path.dirname(destination)) return new Promise((resolve, reject) => { const readStream = fs.createReadStream(source) readStream From 305bf9b4cbb1f2d21cbb3d156e07146c3e5f8bbf Mon Sep 17 00:00:00 2001 From: Byron Igoe Date: Tue, 1 May 2018 13:30:29 -0400 Subject: [PATCH 3/4] Await async mkdirp --- src/main-process/file-recovery-service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main-process/file-recovery-service.js b/src/main-process/file-recovery-service.js index d1750ff9e..d60006b28 100644 --- a/src/main-process/file-recovery-service.js +++ b/src/main-process/file-recovery-service.js @@ -147,7 +147,7 @@ async function tryStatFile (path) { } async function copyFile (source, destination, mode) { - mkdirp.sync(Path.dirname(destination)) + await mkdirp(Path.dirname(destination)) return new Promise((resolve, reject) => { const readStream = fs.createReadStream(source) readStream From 12a54fb04f2d11f82fa54a0824a3572f080ec9e2 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Tue, 1 May 2018 11:40:15 -0700 Subject: [PATCH 4/4] Use callback when calling mkdirp in recovery service --- src/main-process/file-recovery-service.js | 24 ++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main-process/file-recovery-service.js b/src/main-process/file-recovery-service.js index d60006b28..abe2df84e 100644 --- a/src/main-process/file-recovery-service.js +++ b/src/main-process/file-recovery-service.js @@ -147,17 +147,19 @@ async function tryStatFile (path) { } async function copyFile (source, destination, mode) { - await mkdirp(Path.dirname(destination)) return new Promise((resolve, reject) => { - const readStream = fs.createReadStream(source) - readStream - .on('error', reject) - .once('open', () => { - const writeStream = fs.createWriteStream(destination, {mode}) - writeStream - .on('error', reject) - .on('open', () => readStream.pipe(writeStream)) - .once('close', () => resolve()) - }) + mkdirp(Path.dirname(destination), (error) => { + if (error) return reject(error) + const readStream = fs.createReadStream(source) + readStream + .on('error', reject) + .once('open', () => { + const writeStream = fs.createWriteStream(destination, {mode}) + writeStream + .on('error', reject) + .on('open', () => readStream.pipe(writeStream)) + .once('close', () => resolve()) + }) + }) }) }