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,13 +190,16 @@ const showZipContent = (zipFile) => {
showZipContentDOM.onclick = () => {};
document.body.style.cursor = "wait";
lufi.decompress(zipFile).andThen((files) => {
const newElement = document.createElement("div");
lufi
.decompress(zipFile)
.andThen((job) => job.waitForCompletion())
.andThen((job) => {
const newElement = document.createElement("div");
let innerHTML = `<h3>${i18n.zipContent}</h3><ul>`;
let innerHTML = `<h3>${i18n.zipContent}</h3><ul>`;
files.forEach((file) => {
innerHTML += `<li>
job.archiveFiles.forEach((file) => {
innerHTML += `<li>
${escapeHtml(file.name)}
(${filesize(file.size)})
<a href="#"
@ -206,31 +209,35 @@ const showZipContent = (zipFile) => {
<i class="mdi-file-file-download"></i>
</a>
</li>`;
});
innerHTML += "</ul>";
newElement.innerHTML = innerHTML;
pbd.append(newElement);
document
.querySelectorAll(".download-zip-content")
.forEach((element) => {
const elementListener = (e) => {
e.preventDefault();
const filename = element.getAttribute("download");
const file = job.archiveFiles.find(
(file) => file.name === filename
);
element.removeEventListener("click", elementListener);
element.setAttribute("href", URL.createObjectURL(file));
element.click();
};
element.addEventListener("click", elementListener);
showZipContentDOM.style.display = "none";
document.body.style.cursor = "auto";
});
});
innerHTML += "</ul>";
newElement.innerHTML = innerHTML;
pbd.append(newElement);
document.querySelectorAll(".download-zip-content").forEach((element) => {
const elementListener = (e) => {
e.preventDefault();
const filename = element.getAttribute("download");
const file = files.find((file) => file.name === filename);
element.removeEventListener("click", elementListener);
element.setAttribute("href", URL.createObjectURL(file));
element.click();
};
element.addEventListener("click", elementListener);
showZipContentDOM.style.display = "none";
document.body.style.cursor = "auto";
});
});
};
showZipContentDOM.onclick = showZipContentDOMListener;

View File

@ -2,6 +2,7 @@
import {
lufi,
errAsync,
okAsync,
ResultAsync,
isSecureContext,
@ -169,7 +170,7 @@ const uploadZip = (e) => {
lufi
.compress(archiveEntries, zipname)
.andThen((zipFile) => {
.andThen((job) => {
// if '#zipping' is hidden, the zipping has been aborted
if (!document.getElementById("zipping").classList.contains("hide")) {
document.getElementById("zipping").classList.add("hide");
@ -192,7 +193,7 @@ const uploadZip = (e) => {
);
startUpload(
[zipFile],
[job.archiveFile],
delay.value,
del_at_first_view.checked,
true,
@ -387,7 +388,7 @@ const startUpload = (
return okAsync(job);
})
.mapErr((error) => {
.orElse((error) => {
if (clientKey) {
showAlertOnFile(error.message, clientKey);
} else {
@ -397,6 +398,8 @@ const startUpload = (
if (isGuest) {
sendFilesURLs();
}
return errAsync(error);
});
})
)
@ -428,14 +431,7 @@ const handleFiles = (files = []) => {
document.body.style.cursor = "auto";
startUpload(
files,
delay,
delAtFirstView,
isZipped,
undefined,
password
);
startUpload(files, delay, delAtFirstView, isZipped, undefined, password);
} else {
lufi
.addFilesToArchive(files, archiveEntries)
@ -530,8 +526,8 @@ const uploadBoxComplete = (lufiFile) => {
lufiFile.delay === 0
? i18n.noLimit
: `${i18n.expiration} ${formatDate(
lufiFile.delay * 86400 + lufiFile.createdAt
)}`;
lufiFile.delay * 86400 + lufiFile.createdAt
)}`;
if (!isGuest) {
nameDOM.innerHTML += `${sizeDOM.innerHTML} <a href="${actionURL}m?links=${links}"><i class="mdi-communication-email"></i></a><br>${limit}`;

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