opti for unzip

This commit is contained in:
GMrrc 2024-11-20 15:23:12 +01:00
parent e2752c2440
commit df12c52a2d
3 changed files with 21 additions and 30 deletions

View File

@ -1129,6 +1129,12 @@ __webpack_require__.r(__webpack_exports__);
const partName = pathParts[i]; const partName = pathParts[i];
const isDirectory = i < pathParts.length - 1 || file.dir; const isDirectory = i < pathParts.length - 1 || file.dir;
let existing = currentLevel.find(f => f.name === partName && f.isDirectory === isDirectory); let existing = currentLevel.find(f => f.name === partName && f.isDirectory === isDirectory);
let promise;
if (!isDirectory) {
promise = file.async("blob").then(content => {
existing.content = content;
});
}
if (!existing) { if (!existing) {
existing = { existing = {
name: partName, name: partName,
@ -1136,23 +1142,13 @@ __webpack_require__.r(__webpack_exports__);
size: isDirectory ? 0 : file._data.uncompressedSize, size: isDirectory ? 0 : file._data.uncompressedSize,
content: isDirectory ? null : '', content: isDirectory ? null : '',
// Initialiser 'content' pour les fichiers // Initialiser 'content' pour les fichiers
children: isDirectory ? [] : null children: isDirectory ? [] : null,
unzip: promise
}; };
currentLevel.push(existing); currentLevel.push(existing);
} }
if (isDirectory) { if (isDirectory) {
currentLevel = existing.children; currentLevel = existing.children;
} else {
// Lire le contenu des fichiers non répertoires
if (file.dir) continue;
if (!existing && existing.size > 50 * 1024 * 1024) {
console.warn(`Fichier ${existing.name} trop volumineux pour être chargé`);
continue;
}
const promise = file.async("blob").then(content => {
existing.content = content;
});
filePromises.push(promise);
} }
} }
}); });
@ -1171,7 +1167,6 @@ __webpack_require__.r(__webpack_exports__);
}); });
}; };
initializeFolderMap(this.zipContent); initializeFolderMap(this.zipContent);
await Promise.all(filePromises);
console.log('Contenu du ZIP chargé avec succès'); console.log('Contenu du ZIP chargé avec succès');
} catch (error) { } catch (error) {
console.error('Erreur lors du chargement du contenu du ZIP :', error); console.error('Erreur lors du chargement du contenu du ZIP :', error);
@ -1190,6 +1185,7 @@ __webpack_require__.r(__webpack_exports__);
}, },
async onDragStart(file) { async onDragStart(file) {
console.log('Drag start', file); console.log('Drag start', file);
await file.unzip;
this.$emit('file-upload', file); this.$emit('file-upload', file);
} }
} }

File diff suppressed because one or more lines are too long

View File

@ -147,32 +147,28 @@ export default {
const isDirectory = i < pathParts.length - 1 || file.dir; const isDirectory = i < pathParts.length - 1 || file.dir;
let existing = currentLevel.find(f => f.name === partName && f.isDirectory === isDirectory); let existing = currentLevel.find(f => f.name === partName && f.isDirectory === isDirectory);
let promise;
if (!isDirectory) {
promise = file.async("blob").then(content => {
existing.content = content;
});
}
if (!existing) { if (!existing) {
existing = { existing = {
name: partName, name: partName,
isDirectory, isDirectory,
size: isDirectory ? 0 : file._data.uncompressedSize, size: isDirectory ? 0 : file._data.uncompressedSize,
content: isDirectory ? null : '', // Initialiser 'content' pour les fichiers content: isDirectory ? null : '', // Initialiser 'content' pour les fichiers
children: isDirectory ? [] : null children: isDirectory ? [] : null,
unzip: promise
}; };
currentLevel.push(existing); currentLevel.push(existing);
} }
if (isDirectory) { if (isDirectory) {
currentLevel = existing.children; currentLevel = existing.children;
} else {
// Lire le contenu des fichiers non répertoires
if (file.dir) continue;
if (!existing && existing.size > 50 * 1024 * 1024) {
console.warn(`Fichier ${existing.name} trop volumineux pour être chargé`);
continue;
}
const promise = file.async("blob").then(content => {
existing.content = content;
});
filePromises.push(promise);
} }
} }
}); });
@ -192,8 +188,6 @@ export default {
}; };
initializeFolderMap(this.zipContent); initializeFolderMap(this.zipContent);
await Promise.all(filePromises);
console.log('Contenu du ZIP chargé avec succès'); console.log('Contenu du ZIP chargé avec succès');
} catch (error) { } catch (error) {
console.error('Erreur lors du chargement du contenu du ZIP :', error); console.error('Erreur lors du chargement du contenu du ZIP :', error);
@ -213,6 +207,7 @@ export default {
}, },
async onDragStart(file) { async onDragStart(file) {
console.log('Drag start', file); console.log('Drag start', file);
await file.unzip;
this.$emit('file-upload', file); this.$emit('file-upload', file);
} }
}, },