@@ -378,9 +378,7 @@ class ContentUploader extends Component<Props, State> {
378378 if ( droppedItems . items ) {
379379 this . addDataTransferItemsToUploadQueue ( droppedItems . items , itemUpdateCallback ) ;
380380 } else {
381- Array . from ( droppedItems . files ) . forEach ( file => {
382- this . addFilesToUploadQueue ( [ file ] , itemUpdateCallback ) ;
383- } ) ;
381+ this . addFilesToUploadQueue ( Array . from ( droppedItems . files ) , itemUpdateCallback ) ;
384382 }
385383 } ;
386384
@@ -426,20 +424,20 @@ class ContentUploader extends Component<Props, State> {
426424 * @private
427425 * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions> } dataTransferItems
428426 * @param {Function } itemUpdateCallback
429- * @returns {void }
427+ * @returns {Promise<any> }
430428 */
431- addFileDataTransferItemsToUploadQueue = (
429+ addFileDataTransferItemsToUploadQueue = async (
432430 dataTransferItems : Array < DataTransferItem | UploadDataTransferItemWithAPIOptions > ,
433431 itemUpdateCallback : Function ,
434- ) : void => {
435- dataTransferItems . forEach ( async item => {
436- const file = await getFileFromDataTransferItem ( item ) ;
437- if ( ! file ) {
438- return ;
432+ ) : Promise < any > => {
433+ const files = await Promise . all ( dataTransferItems . map ( async item => getFileFromDataTransferItem ( item ) ) ) ;
434+ const filesArray = [ ] ;
435+ files . forEach ( file => {
436+ if ( file ) {
437+ filesArray . push ( file ) ;
439438 }
440-
441- this . addFilesToUploadQueue ( [ file ] , itemUpdateCallback ) ;
442439 } ) ;
440+ this . addFilesToUploadQueue ( filesArray , itemUpdateCallback ) ;
443441 } ;
444442
445443 /**
@@ -448,21 +446,22 @@ class ContentUploader extends Component<Props, State> {
448446 * @private
449447 * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions> } dataTransferItems
450448 * @param {Function } itemUpdateCallback
451- * @returns {void }
449+ * @returns {Promise<any> }
452450 */
453- addPackageDataTransferItemsToUploadQueue = (
451+ addPackageDataTransferItemsToUploadQueue = async (
454452 dataTransferItems : Array < DataTransferItem | UploadDataTransferItemWithAPIOptions > ,
455453 itemUpdateCallback : Function ,
456- ) : void => {
457- dataTransferItems . forEach ( item => {
458- const file = getPackageFileFromDataTransferItem ( item ) ;
459-
460- if ( ! file ) {
461- return ;
454+ ) : Promise < any > => {
455+ const packageFiles = await Promise . all (
456+ dataTransferItems . map ( async item => getPackageFileFromDataTransferItem ( item ) ) ,
457+ ) ;
458+ const packageFilesArray = [ ] ;
459+ packageFiles . forEach ( packageFile => {
460+ if ( packageFile ) {
461+ packageFilesArray . push ( packageFile ) ;
462462 }
463-
464- this . addFilesToUploadQueue ( [ file ] , itemUpdateCallback ) ;
465463 } ) ;
464+ this . addFilesToUploadQueue ( packageFilesArray , itemUpdateCallback ) ;
466465 } ;
467466
468467 /**
@@ -494,11 +493,28 @@ class ContentUploader extends Component<Props, State> {
494493
495494 const fileAPIOptions : Object = getDataTransferItemAPIOptions ( newItems [ 0 ] ) ;
496495 const { folderId = rootFolderId } = fileAPIOptions ;
497- newItems . forEach ( async item => {
498- const folderUpload = this . getFolderUploadAPI ( folderId ) ;
499- await folderUpload . buildFolderTreeFromDataTransferItem ( item ) ;
500- this . addFolderToUploadQueue ( folderUpload , itemUpdateCallback , fileAPIOptions ) ;
496+ const folderUploads = await Promise . all (
497+ newItems . map ( async item => {
498+ const folderUpload = this . getFolderUploadAPI ( folderId ) ;
499+ await folderUpload . buildFolderTreeFromDataTransferItem ( item ) ;
500+ return folderUpload ;
501+ } ) ,
502+ ) ;
503+ const folderUploadsArray = [ ] ;
504+ folderUploads . forEach ( folderUpload => {
505+ // $FlowFixMe no file property
506+ folderUploadsArray . push ( {
507+ api : folderUpload ,
508+ extension : '' ,
509+ isFolder : true ,
510+ name : folderUpload . folder . name ,
511+ options : fileAPIOptions ,
512+ progress : 0 ,
513+ size : 1 ,
514+ status : STATUS_PENDING ,
515+ } ) ;
501516 } ) ;
517+ this . addToQueue ( folderUploadsArray , itemUpdateCallback ) ;
502518 } ;
503519
504520 /**
0 commit comments