Skip to content

Commit f68f9ca

Browse files
committed
refactor(defaultTheme): refine enhanceUpload()
1 parent ade66a3 commit f68f9ca

File tree

1 file changed

+28
-51
lines changed

1 file changed

+28
-51
lines changed

src/tpl/defaultTheme/frontend/index.js

Lines changed: 28 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -432,22 +432,16 @@
432432

433433
function enhanceUpload() {
434434
var upload = document.body.querySelector('.upload');
435-
if (!upload) {
436-
return;
437-
}
435+
if (!upload) return;
436+
438437
var form = upload.querySelector('form');
439-
if (!form) {
440-
return;
441-
}
438+
if (!form) return;
439+
442440
var fileInput = form.querySelector('.file');
443-
if (!fileInput) {
444-
return;
445-
}
441+
if (!fileInput) return;
446442

447443
var uploadType = document.body.querySelector('.upload-type');
448-
if (!uploadType) {
449-
return;
450-
}
444+
if (!uploadType) return;
451445

452446
var file = 'file';
453447
var dirFile = 'dirfile';
@@ -546,45 +540,28 @@
546540
}
547541
} else {
548542
itemsToFiles = function (dataTransferItems, canMkdir, onDone, onLacksMkdir) {
549-
function entriesToFiles(entries, files, onLevelDone) {
550-
var len = entries.length;
551-
var cb = 0;
552-
if (!len) return onLevelDone();
553-
554-
function increaseCb() {
555-
cb++;
556-
if (cb === len) {
557-
onLevelDone();
558-
}
559-
}
560-
561-
function dirReaderToFiles(dirReader, files, onAllRead) {
562-
dirReader.readEntries(function (subEntries) {
563-
if (!subEntries.length) return onAllRead();
564-
entriesToFiles(subEntries, files, function () {
565-
dirReaderToFiles(dirReader, files, onAllRead);
566-
});
567-
}, onAllRead);
568-
}
569-
570-
entries.forEach(function (entry) {
571-
if (entry.isFile) {
572-
var relativePath = entry.fullPath;
573-
if (relativePath[0] === '/') {
574-
relativePath = relativePath.substring(1);
543+
function entriesToFiles(entries, files) {
544+
return Promise.all(entries.map(function (entry) {
545+
return new Promise(function (resolve) {
546+
if (entry.isFile) {
547+
var relativePath = entry.fullPath;
548+
if (relativePath[0] === '/') {
549+
relativePath = relativePath.slice(1);
550+
}
551+
entry.file(function (file) {
552+
files.push({file: file, relativePath: relativePath});
553+
resolve();
554+
}, function (err) {
555+
logError(err);
556+
resolve()
557+
});
558+
} else if (entry.isDirectory) {
559+
entry.createReader().readEntries(function (subEntries) {
560+
entriesToFiles(subEntries, files).then(resolve);
561+
});
575562
}
576-
entry.file(function (file) {
577-
files.push({file: file, relativePath: relativePath});
578-
increaseCb();
579-
}, function (err) {
580-
increaseCb();
581-
logError(err);
582-
});
583-
} else if (entry.isDirectory) {
584-
var dirReader = entry.createReader();
585-
dirReaderToFiles(dirReader, files, increaseCb);
586-
}
587-
});
563+
})
564+
}));
588565
}
589566

590567
var files = [];
@@ -613,7 +590,7 @@
613590
}
614591
}
615592

616-
entriesToFiles(entries, files, function () {
593+
entriesToFiles(entries, files).then(function () {
617594
onDone(files, hasDir);
618595
});
619596
}

0 commit comments

Comments
 (0)