diff --git a/packages/puter-js/src/modules/FileSystem/operations/upload.js b/packages/puter-js/src/modules/FileSystem/operations/upload.js index 90bbff01..b32da230 100644 --- a/packages/puter-js/src/modules/FileSystem/operations/upload.js +++ b/packages/puter-js/src/modules/FileSystem/operations/upload.js @@ -15,16 +15,19 @@ const upload = async function(items, dirPath, options = {}){ } } + const error = (e) => { + // if error callback is provided, call it + if(options.error && typeof options.error === 'function') + options.error(e); + return reject(e); + }; + // xhr object to be used for the upload let xhr = new XMLHttpRequest(); // Can not write to root - if(dirPath === '/'){ - // if error callback is provided, call it - if(options.error && typeof options.error === 'function') - options.error('Can not upload to root directory.'); - return reject('Can not upload to root directory.'); - } + if(dirPath === '/') + return error('Can not upload to root directory.'); // If dirPath is not provided or it's not starting with a slash, it means it's a relative path // in that case, we need to prepend the app's root directory to it @@ -145,10 +148,7 @@ const upload = async function(items, dirPath, options = {}){ // Continue only if there are actually any files/directories to upload if(dirs.length === 0 && files.length === 0){ - if(options.error && typeof options.error === 'function'){ - options.error({code: 'EMPTY_UPLOAD', message: 'No files or directories to upload.'}); - } - return reject({code: 'EMPTY_UPLOAD', message: 'No files or directories to upload.'}); + return error({code: 'EMPTY_UPLOAD', message: 'No files or directories to upload.'}); } // Check storage capacity. @@ -163,10 +163,7 @@ const upload = async function(items, dirPath, options = {}){ try{ storage = await this.space(); if(storage.capacity - storage.used < total_size){ - if(options.error && typeof options.error === 'function'){ - options.error({code: 'NOT_ENOUGH_SPACE', message: 'Not enough storage space available.'}); - } - return reject({code: 'NOT_ENOUGH_SPACE', message: 'Not enough storage space available.'}); + return error({code: 'NOT_ENOUGH_SPACE', message: 'Not enough storage space available.'}); } }catch(e){ // Ignored @@ -368,18 +365,10 @@ const upload = async function(items, dirPath, options = {}){ break; } } - // if error callback is provided, call it - if(options.error && typeof options.error === 'function'){ - options.error(failed_operation); - } - return reject(failed_operation); + return error(failed_operation); } - // if error callback is provided, call it - if(options.error && typeof options.error === 'function'){ - options.error(resp); - } - return reject(resp); + return error(resp); } // Success else{