|
@@ -1,4 +1,3 @@
|
|
|
-import getRelativePath from './getRelativePath.js'
|
|
|
import getFilesAndDirectoriesFromDirectory from './getFilesAndDirectoriesFromDirectory.js'
|
|
|
|
|
|
/**
|
|
@@ -9,6 +8,7 @@ function getAsFileSystemHandleFromEntry (entry, logDropError) {
|
|
|
return {
|
|
|
// eslint-disable-next-line no-nested-ternary
|
|
|
kind: entry.isFile ? 'file' : entry.isDirectory ? 'directory' : undefined,
|
|
|
+ name: entry.name,
|
|
|
getFile () {
|
|
|
return new Promise((resolve, reject) => entry.file(resolve, reject))
|
|
|
},
|
|
@@ -25,17 +25,17 @@ function getAsFileSystemHandleFromEntry (entry, logDropError) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-async function* createPromiseToAddFileOrParseDirectory (entry) {
|
|
|
+async function* createPromiseToAddFileOrParseDirectory (entry, relativePath) {
|
|
|
// For each dropped item, - make sure it's a file/directory, and start deepening in!
|
|
|
if (entry.kind === 'file') {
|
|
|
const file = await entry.getFile()
|
|
|
if (file !== null) {
|
|
|
- file.relativePath = getRelativePath(entry)
|
|
|
+ file.relativePath = relativePath ? `${relativePath}/${entry.name}` : null
|
|
|
yield file
|
|
|
}
|
|
|
} else if (entry.kind === 'directory') {
|
|
|
for await (const handle of entry.values()) {
|
|
|
- yield* createPromiseToAddFileOrParseDirectory(handle)
|
|
|
+ yield* createPromiseToAddFileOrParseDirectory(handle, `${relativePath}/${entry.name}`)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -53,7 +53,7 @@ export default async function* getFilesFromDataTransfer (dataTransfer, logDropEr
|
|
|
// :entry can be null when we drop the url e.g.
|
|
|
if (entry != null) {
|
|
|
try {
|
|
|
- yield* createPromiseToAddFileOrParseDirectory(entry, logDropError)
|
|
|
+ yield* createPromiseToAddFileOrParseDirectory(entry, '')
|
|
|
} catch (err) {
|
|
|
if (lastResortFile) {
|
|
|
yield lastResortFile
|