switch to mongodb, add drag&drop
This commit is contained in:
41
frontend/src/components/home.js
Normal file
41
frontend/src/components/home.js
Normal file
@@ -0,0 +1,41 @@
|
||||
function getFilesDataTransferItems(dataTransferItems) {
|
||||
function traverseFileTreePromise(item, path = "", folder) {
|
||||
return new Promise(resolve => {
|
||||
if (item.isFile) {
|
||||
item.file(file => {
|
||||
file.filepath = path + "/" + file.name; //save full path
|
||||
folder.push(file);
|
||||
resolve(file);
|
||||
});
|
||||
} else if (item.isDirectory) {
|
||||
let dirReader = item.createReader();
|
||||
dirReader.readEntries(entries => {
|
||||
let entriesPromises = [];
|
||||
let subfolder = [];
|
||||
folder.push({ name: item.name, subfolder: subfolder });
|
||||
for (let entry of entries)
|
||||
entriesPromises.push(
|
||||
traverseFileTreePromise(entry, path + "/" + item.name, subfolder)
|
||||
);
|
||||
resolve(Promise.all(entriesPromises));
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let files = [];
|
||||
return new Promise((resolve, reject) => {
|
||||
let entriesPromises = [];
|
||||
for (let it of dataTransferItems)
|
||||
entriesPromises.push(
|
||||
traverseFileTreePromise(it.webkitGetAsEntry(), "", files)
|
||||
);
|
||||
Promise.all(entriesPromises).then(entries => {
|
||||
resolve(files);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function get_files_data_transfer_items(data_transfer_items) {
|
||||
return getFilesDataTransferItems(data_transfer_items);
|
||||
}
|
||||
Reference in New Issue
Block a user