frontend: update dependencies

This commit is contained in:
Johannes Zellner
2024-08-19 11:47:43 +02:00
parent a865320e3a
commit 4608301f1c
3 changed files with 163 additions and 117 deletions
+66 -24
View File
@@ -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;