From f0f6a684a795f3fed67b934175be182df6020885 Mon Sep 17 00:00:00 2001 From: Mahdi Dibaiee Date: Sat, 24 Oct 2015 20:24:15 +0330 Subject: [PATCH] fix(errors): show verbose error for duplicate files progress #14 --- build/main.js | 14 +++++++++++--- src/js/api/files.js | 9 +++++++++ src/js/components/breadcrumb.js | 1 - src/js/reducers/files.js | 4 +++- src/js/utils.js | 3 ++- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/build/main.js b/build/main.js index 5bb13b6..95e8fb2 100644 --- a/build/main.js +++ b/build/main.js @@ -41075,6 +41075,12 @@ var readFile = _asyncToGenerator(function* (path) { exports.readFile = readFile; var writeFile = _asyncToGenerator(function* (path, content) { + try { + var file = yield getFile(path); + + return Promise.reject(new Error('File already exists: ' + path)); + } catch (e) {} + var request = sdcard().addNamed(content, path); return new Promise(function (resolve, reject) { @@ -41258,7 +41264,6 @@ var Breadcrumb = (function (_Component) { var els = []; if (this.props.search) { - console.log('search'); els = [_react2['default'].createElement( 'span', { key: '000' }, @@ -43434,18 +43439,20 @@ exports['default'] = function (state, action) { }); } + console.log('readFile', path); return (0, _apiFiles.readFile)(path).then(function (content) { + console.log('readFile done', path); archive.file(archivePath + '/' + file.name, content); }); })); all.then(function () { var buffer = archive.generate({ type: 'nodebuffer' }); - console.log(buffer); var blob = new Blob([buffer], { type: 'application/zip' }); var cwd = _store2['default'].getState().get('cwd'); var path = (0, _utils.normalize)(cwd + '/' + action.name); + console.log(path); return (0, _apiFiles.writeFile)(path, blob); }).then(boundRefresh)['catch'](_utils.reportError); @@ -44021,7 +44028,8 @@ function getKey(object, key) { function reportError(err) { console.error(err); - var action = (0, _actionsDialog.show)('errorDialog', { description: err.message }); + var msg = err.message || err.target.error.message; + var action = (0, _actionsDialog.show)('errorDialog', { description: msg }); _store2['default'].dispatch(action); } diff --git a/src/js/api/files.js b/src/js/api/files.js index 910fff6..7a931eb 100644 --- a/src/js/api/files.js +++ b/src/js/api/files.js @@ -92,6 +92,15 @@ export async function readFile(path) { } export async function writeFile(path, content) { + try { + let file = await getFile(path); + + return Promise.reject(new Error('File already exists: ' + path)); + } catch(e) { + + } + + let request = sdcard().addNamed(content, path); return new Promise((resolve, reject) => { diff --git a/src/js/components/breadcrumb.js b/src/js/components/breadcrumb.js index 2f71d20..70176b9 100644 --- a/src/js/components/breadcrumb.js +++ b/src/js/components/breadcrumb.js @@ -9,7 +9,6 @@ export default class Breadcrumb extends Component { let els = []; if (this.props.search) { - console.log('search'); els = [ Search: {this.props.search} ] diff --git a/src/js/reducers/files.js b/src/js/reducers/files.js index 8c1f60b..ce9f601 100644 --- a/src/js/reducers/files.js +++ b/src/js/reducers/files.js @@ -107,18 +107,20 @@ export default function(state = [], action) { }) } + console.log('readFile', path); return readFile(path).then(content => { + console.log('readFile done', path); archive.file(archivePath + '/' + file.name, content); }); })) all.then(() => { let buffer = archive.generate({ type: 'nodebuffer' }); - console.log(buffer); let blob = new Blob([buffer], { type: 'application/zip' }); let cwd = store.getState().get('cwd'); let path = normalize(cwd + '/' + action.name); + console.log(path); return writeFile(path, blob); }).then(boundRefresh).catch(reportError); diff --git a/src/js/utils.js b/src/js/utils.js index 08441f2..2f3f019 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -27,7 +27,8 @@ export function getKey(object = store.getState().toJS(), key) { export function reportError(err) { console.error(err); - let action = show('errorDialog', {description: err.message}); + let msg = err.message || err.target.error.message; + let action = show('errorDialog', {description: msg}); store.dispatch(action); }