Upgrade to latest Lufi API, use workers for compression/decompression

This commit is contained in:
Booteille 2024-11-24 22:53:41 +01:00
parent 98d22cbd85
commit aa97e33ae2
No known key found for this signature in database
GPG Key ID: 0AB6C6CA01272646
12 changed files with 65 additions and 50 deletions

View File

@ -190,12 +190,15 @@ const showZipContent = (zipFile) => {
showZipContentDOM.onclick = () => {}; showZipContentDOM.onclick = () => {};
document.body.style.cursor = "wait"; document.body.style.cursor = "wait";
lufi.decompress(zipFile).andThen((files) => { lufi
.decompress(zipFile)
.andThen((job) => job.waitForCompletion())
.andThen((job) => {
const newElement = document.createElement("div"); const newElement = document.createElement("div");
let innerHTML = `<h3>${i18n.zipContent}</h3><ul>`; let innerHTML = `<h3>${i18n.zipContent}</h3><ul>`;
files.forEach((file) => { job.archiveFiles.forEach((file) => {
innerHTML += `<li> innerHTML += `<li>
${escapeHtml(file.name)} ${escapeHtml(file.name)}
(${filesize(file.size)}) (${filesize(file.size)})
@ -214,12 +217,16 @@ const showZipContent = (zipFile) => {
pbd.append(newElement); pbd.append(newElement);
document.querySelectorAll(".download-zip-content").forEach((element) => { document
.querySelectorAll(".download-zip-content")
.forEach((element) => {
const elementListener = (e) => { const elementListener = (e) => {
e.preventDefault(); e.preventDefault();
const filename = element.getAttribute("download"); const filename = element.getAttribute("download");
const file = files.find((file) => file.name === filename); const file = job.archiveFiles.find(
(file) => file.name === filename
);
element.removeEventListener("click", elementListener); element.removeEventListener("click", elementListener);
element.setAttribute("href", URL.createObjectURL(file)); element.setAttribute("href", URL.createObjectURL(file));

View File

@ -2,6 +2,7 @@
import { import {
lufi, lufi,
errAsync,
okAsync, okAsync,
ResultAsync, ResultAsync,
isSecureContext, isSecureContext,
@ -169,7 +170,7 @@ const uploadZip = (e) => {
lufi lufi
.compress(archiveEntries, zipname) .compress(archiveEntries, zipname)
.andThen((zipFile) => { .andThen((job) => {
// if '#zipping' is hidden, the zipping has been aborted // if '#zipping' is hidden, the zipping has been aborted
if (!document.getElementById("zipping").classList.contains("hide")) { if (!document.getElementById("zipping").classList.contains("hide")) {
document.getElementById("zipping").classList.add("hide"); document.getElementById("zipping").classList.add("hide");
@ -192,7 +193,7 @@ const uploadZip = (e) => {
); );
startUpload( startUpload(
[zipFile], [job.archiveFile],
delay.value, delay.value,
del_at_first_view.checked, del_at_first_view.checked,
true, true,
@ -387,7 +388,7 @@ const startUpload = (
return okAsync(job); return okAsync(job);
}) })
.mapErr((error) => { .orElse((error) => {
if (clientKey) { if (clientKey) {
showAlertOnFile(error.message, clientKey); showAlertOnFile(error.message, clientKey);
} else { } else {
@ -397,6 +398,8 @@ const startUpload = (
if (isGuest) { if (isGuest) {
sendFilesURLs(); sendFilesURLs();
} }
return errAsync(error);
}); });
}) })
) )
@ -428,14 +431,7 @@ const handleFiles = (files = []) => {
document.body.style.cursor = "auto"; document.body.style.cursor = "auto";
startUpload( startUpload(files, delay, delAtFirstView, isZipped, undefined, password);
files,
delay,
delAtFirstView,
isZipped,
undefined,
password
);
} else { } else {
lufi lufi
.addFilesToArchive(files, archiveEntries) .addFilesToArchive(files, archiveEntries)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long