diff --git a/ui/ui-frontend/projects/collect/src/app/collect/shared/collect-upload/collect-upload.service.ts b/ui/ui-frontend/projects/collect/src/app/collect/shared/collect-upload/collect-upload.service.ts index d13d6de3622..9982862e67d 100644 --- a/ui/ui-frontend/projects/collect/src/app/collect/shared/collect-upload/collect-upload.service.ts +++ b/ui/ui-frontend/projects/collect/src/app/collect/shared/collect-upload/collect-upload.service.ts @@ -237,30 +237,18 @@ export class CollectUploadService { } private parseFileEntry(fileEntry: any): Promise { - return new Promise((resolve, reject) => { - fileEntry.file( - (file: any) => { - resolve(file); - }, - (err: any) => { - reject(err); - }, - ); - }); + return new Promise((resolve, reject) => fileEntry.file(resolve, reject)); } - private parseDirectoryEntry(directoryEntry: any): Promise { + private async parseDirectoryEntry(directoryEntry: any): Promise { const directoryReader = directoryEntry.createReader(); - return new Promise((resolve, reject) => { - directoryReader.readEntries( - (entries: any) => { - resolve(entries); - }, - (err: any) => { - reject(err); - }, - ); - }); + const entries = []; + let batch; + // We have to call readEntries several times until it returns an empty list to make sure we read all entries (otherwise it is limited to 100 entries) + while ((batch = await new Promise((resolve, reject) => directoryReader.readEntries(resolve, reject))).length) { + entries.push(...batch); + } + return entries; } private uploadInfo(uploadFile: CollectUploadFile) {