Skip to content

Commit

Permalink
@uppy/utils: fix relativePath when drag&dropping a folder (#4043)
Browse files Browse the repository at this point in the history
Fixes: #4041
  • Loading branch information
aduh95 committed Aug 24, 2022
1 parent a873544 commit c658883
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 22 deletions.
3 changes: 3 additions & 0 deletions e2e/cypress/integration/dashboard-ui.spec.ts
Expand Up @@ -33,5 +33,8 @@ describe('dashboard-ui', () => {
cy.get('.uppy-Dashboard-Item-previewImg')
.should('have.length', 3)
.each((element) => expect(element).attr('src').to.include('blob:'))
cy.window().then(({ uppy }) => {
expect(JSON.stringify(uppy.getFiles().map(file => file.meta.relativePath))).to.be.equal('[null,null,null,null]')
})
})
})

This file was deleted.

@@ -1,4 +1,3 @@
import getRelativePath from './getRelativePath.js'
import getFilesAndDirectoriesFromDirectory from './getFilesAndDirectoriesFromDirectory.js'

/**
Expand All @@ -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))
},
Expand All @@ -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}`)
}
}
}
Expand All @@ -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
Expand Down

0 comments on commit c658883

Please sign in to comment.