diff --git a/frontend/src/views/Home.vue b/frontend/src/views/Home.vue index f52c4ca08..be2c14aac 100644 --- a/frontend/src/views/Home.vue +++ b/frontend/src/views/Home.vue @@ -292,10 +292,6 @@ export default { async onDrop(targetFolder, dataTransfer, files) { const fullTargetFolder = sanitize(this.cwd + '/' + targetFolder); - console.log('---') - console.log(dataTransfer) - // return; - // if dataTransfer is set, we have a file/folder drop from outside if (dataTransfer) { @@ -309,10 +305,8 @@ export default { async function traverseFileTree(item, path) { return new Promise(async (resolve, reject) => { if (item.isFile) { - item.file((file) => { - fileList.push(file); - resolve(); - }, reject); + fileList.push(await getFile(item)); + resolve(); } else if (item.isDirectory) { // Get folder contents const dirReader = item.createReader(); @@ -330,40 +324,18 @@ export default { }); } - // if we got here we have a folder drop and a modern browser - // now traverse the folder tree and create a file list - await traverseFileTree(folderItem, ''); + // collect all files to upload + for (const item of dataTransfer.items) { + const entry = item.webkitGetAsEntry(); + + if (entry.isFile) { + fileList.push(await getFile(entry)); + } else if (entry.isDirectory) { + await traverseFileTree(entry, sanitize(`${this.cwd}/${targetFolder}`)); + } + } + this.$refs.fileUploader.addFiles(fileList, sanitize(`${this.cwd}/${targetFolder}`)); - - // // figure if a folder was dropped on a modern browser, in this case the first would have to be a directory - // let folderItem; - // try { - // folderItem = dataTransfer.items[0].webkitGetAsEntry(); - // if (folderItem.isFile) return this.$refs.fileUploader.addFiles(dataTransfer.files, fullTargetFolder, false); - // } catch (e) { - // return this.$refs.fileUploader.addFiles(dataTransfer.files, fullTargetFolder, false); - // } - - // // if we got here we have a folder drop and a modern browser - // // now traverse the folder tree and create a file list - // var that = this; - // function traverseFileTree(item, path) { - // if (item.isFile) { - // item.file(function (file) { - // that.$refs.fileUploader.addFiles([file], sanitize(`${that.cwd}/${targetFolder}`), false); - // }); - // } else if (item.isDirectory) { - // // Get folder contents - // var dirReader = item.createReader(); - // dirReader.readEntries(function (entries) { - // for (let i in entries) { - // traverseFileTree(entries[i], item.name); - // } - // }); - // } - // } - - // traverseFileTree(folderItem, ''); } else { if (!files.length) return;