( item: FileSystemDirectoryEntry )
| 332 | } |
| 333 | |
| 334 | async function* getEntries( |
| 335 | item: FileSystemDirectoryEntry |
| 336 | ): AsyncIterable<FileDropItem | DirectoryDropItem> { |
| 337 | let reader = item.createReader(); |
| 338 | |
| 339 | // We must call readEntries repeatedly because there may be a limit to the |
| 340 | // number of entries that are returned at once. |
| 341 | let entries: FileSystemEntry[]; |
| 342 | do { |
| 343 | entries = await new Promise((resolve, reject) => { |
| 344 | reader.readEntries(resolve, reject); |
| 345 | }); |
| 346 | |
| 347 | for (let entry of entries) { |
| 348 | if (entry.isFile) { |
| 349 | let file = await getEntryFile(entry as FileSystemFileEntry); |
| 350 | yield createFileItem(file); |
| 351 | } else if (entry.isDirectory) { |
| 352 | yield createDirectoryItem(entry); |
| 353 | } |
| 354 | } |
| 355 | } while (entries.length > 0); |
| 356 | } |
| 357 | |
| 358 | function getEntryFile(entry: FileSystemFileEntry): Promise<File> { |
| 359 | return new Promise((resolve, reject) => entry.file(resolve, reject)); |
no test coverage detected