(item, files)
| 252 | |
| 253 | // Traverse the dropped file tree |
| 254 | async function traverseFileTree(item, files) { |
| 255 | console.log(`🌲 Traversing: ${item.name}, isFile=${item.isFile}, isDirectory=${item.isDirectory}`); |
| 256 | |
| 257 | if (item.isFile) { |
| 258 | return new Promise((resolve) => { |
| 259 | item.file((file) => { |
| 260 | console.log(` ✅ Got file: ${file.name} (${file.type}, ${file.size} bytes)`); |
| 261 | files.push(file); |
| 262 | resolve(); |
| 263 | }, (error) => { |
| 264 | console.error(` ❌ Failed to get file: ${item.name}`, error); |
| 265 | resolve(); |
| 266 | }); |
| 267 | }); |
| 268 | } else if (item.isDirectory) { |
| 269 | console.log(` 📂 Entering directory: ${item.name}`); |
| 270 | const dirReader = item.createReader(); |
| 271 | const entries = await readAllEntries(dirReader); |
| 272 | console.log(` 📂 Directory ${item.name} contains ${entries.length} entries`); |
| 273 | |
| 274 | for (const entry of entries) { |
| 275 | await traverseFileTree(entry, files); |
| 276 | } |
| 277 | } |
| 278 | } |
| 279 | |
| 280 | function readAllEntries(dirReader) { |
| 281 | return new Promise((resolve) => { |
no test coverage detected