frontend: update dependencies
This commit is contained in:
+66
-24
@@ -292,36 +292,78 @@ 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) {
|
||||
// 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);
|
||||
|
||||
async function getFile(entry) {
|
||||
return new Promise((resolve, reject) => {
|
||||
entry.file(resolve, reject);
|
||||
});
|
||||
}
|
||||
|
||||
const fileList = [];
|
||||
async function traverseFileTree(item, path) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
if (item.isFile) {
|
||||
item.file((file) => {
|
||||
fileList.push(file);
|
||||
resolve();
|
||||
}, reject);
|
||||
} else if (item.isDirectory) {
|
||||
// Get folder contents
|
||||
const dirReader = item.createReader();
|
||||
const entries = await new Promise((resolve, reject) => { dirReader.readEntries(resolve, reject); });
|
||||
|
||||
for (let i in entries) {
|
||||
await traverseFileTree(entries[i], item.name);
|
||||
}
|
||||
|
||||
resolve();
|
||||
} else {
|
||||
console.log('Skipping uknown file type', item);
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
await traverseFileTree(folderItem, '');
|
||||
this.$refs.fileUploader.addFiles(fileList, sanitize(`${this.cwd}/${targetFolder}`));
|
||||
|
||||
traverseFileTree(folderItem, '');
|
||||
// // 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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user