mirror of
https://github.com/MasterAcnolo/Freedom-Loader.git
synced 2026-07-29 18:25:47 +02:00
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
const form = document.getElementById("downloadForm");
|
|
const statusDiv = document.getElementById("downloadStatus");
|
|
const button = form.querySelector("button[type=\"submit\"]");
|
|
const stopBtn = document.getElementById("stopBtn");
|
|
let isDownloading = false;
|
|
let userStoppedDownload = false;
|
|
|
|
form.addEventListener("submit", async (e) => {
|
|
e.preventDefault();
|
|
button.disabled = true;
|
|
stopBtn.style.display = "inline-flex";
|
|
statusDiv.style.display = "none"; // Hide status div
|
|
isDownloading = true;
|
|
userStoppedDownload = false;
|
|
|
|
const formData = new FormData(form);
|
|
const params = new URLSearchParams(formData);
|
|
|
|
try {
|
|
const res = await fetch("/download", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
body: params,
|
|
});
|
|
|
|
if (!res.ok) {
|
|
if (!userStoppedDownload) {
|
|
const errorText = await res.text();
|
|
statusDiv.textContent = errorText;
|
|
statusDiv.style.display = "block";
|
|
}
|
|
return;
|
|
}
|
|
|
|
} catch (err) {
|
|
if (!isDownloading && !userStoppedDownload) {
|
|
statusDiv.style.display = "none";
|
|
}
|
|
} finally {
|
|
isDownloading = false;
|
|
button.disabled = false;
|
|
stopBtn.style.display = "none";
|
|
}
|
|
});
|
|
|
|
async function stopDownload() {
|
|
if (!isDownloading) return;
|
|
|
|
userStoppedDownload = true;
|
|
button.disabled = true;
|
|
stopBtn.disabled = true;
|
|
|
|
try {
|
|
await fetch("/download/cancel", {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
});
|
|
|
|
} catch (err) {
|
|
console.error("Error stopping download:", err);
|
|
} finally {
|
|
isDownloading = false;
|
|
button.disabled = false;
|
|
stopBtn.disabled = false;
|
|
stopBtn.style.display = "none";
|
|
|
|
// Reset progress bar
|
|
const progressWrapper = document.getElementById("downloadProgressWrapper");
|
|
if (progressWrapper) progressWrapper.style.display = "none";
|
|
|
|
const progressBar = document.getElementById("downloadProgress");
|
|
if (progressBar) progressBar.style.width = "0%";
|
|
}
|
|
} |