Added progress dialog details

This commit is contained in:
4nshuman 2024-10-06 21:19:42 +05:30
parent f0f8e454f9
commit e252567c88

View File

@ -2184,9 +2184,16 @@ window.unzipItem = async function(itemPath) {
}, 500);
let filePath = itemPath;
let currentProgress = window.zippingProgressConfig.SEQUENCING;
progwin?.set_status(i18n('sequencing', path.basename(filePath)));
let file = await blobToUint8Array(await puter.fs.read(filePath));
progwin?.set_progress(currentProgress.toPrecision(2));
progwin?.set_status(i18n('unzipping', path.basename(filePath)));
terminateOp = fflate.unzip(file, async (err, unzipped) => {
currentProgress += window.zippingProgressConfig.ZIPPING;
progwin?.set_progress(currentProgress.toPrecision(2));
if(err) {
UIAlert(e.message);
// close progress window
@ -2197,6 +2204,7 @@ window.unzipItem = async function(itemPath) {
} else {
const rootdir = await puter.fs.mkdir(path.dirname(filePath) + '/' + path.basename(filePath, '.zip'), { dedupeName: true });
let queuedFileWrites = []
let perItemProgress = window.zippingProgressConfig.WRITING / Object.keys(unzipped).length;
Object.keys(unzipped).forEach(fileItem => {
let fileWriteProcess = new Promise(async (resolve, reject) => {
try {
@ -2204,11 +2212,14 @@ window.unzipItem = async function(itemPath) {
let fileData = new Blob([new Uint8Array(unzipped[fileItem], unzipped[fileItem].byteOffset, unzipped[fileItem].length)]);
if (fileItem.includes("/")) {
[dirLevel, fileName] = [fileItem.slice(0, fileItem.lastIndexOf("/")), fileItem.slice(fileItem.lastIndexOf("/") + 1)]
// await puter.fs.mkdir(rootdir.path + '/' + dirLevel, { createMissingParents: true });
await puter.fs.mkdir(rootdir.path + '/' + dirLevel, { createMissingParents: true });
} else {
fileName = fileItem;
}
progwin?.set_status(i18n('writing', fileItem));
fileName != "" && await puter.fs.write(rootdir.path + '/' + fileItem, fileData);
currentProgress += perItemProgress;
progwin?.set_progress(currentProgress.toPrecision(2));
resolve();
} catch (e) {
UIAlert(e.message);
@ -2218,6 +2229,7 @@ window.unzipItem = async function(itemPath) {
queuedFileWrites.push(fileWriteProcess);
});
Promise.all(queuedFileWrites).then(() => {
progwin?.set_progress(window.zippingProgressConfig.TOTAL.toPrecision(2));
// close progress window
clearTimeout(progwin_timeout);
setTimeout(() => {