Fix file clear for errors (#2302)

* Prevent file input from being removed when an error occurs

* Fix a bug preventing fetch when 'Bored waiting' btn isn't present
This commit is contained in:
Rafael Encinas 2024-11-22 10:11:23 -07:00 committed by GitHub
parent 61bccd1d8b
commit 543ad083a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -39,7 +39,9 @@
const originalButtonText = submitButton.textContent;
var boredWaiting = localStorage.getItem("boredWaiting") || "disabled";
showGameBtn.style.display = "none";
if (showGameBtn) {
showGameBtn.style.display = "none";
}
// Remove empty file entries
for (let [key, value] of formData.entries()) {
@ -73,8 +75,10 @@
clearFileInput();
clearTimeout(timeoutId);
showGameBtn.style.display = "none";
showGameBtn.style.marginTop = "";
if (showGameBtn) {
showGameBtn.style.display = "none";
showGameBtn.style.marginTop = "";
}
submitButton.textContent = originalButtonText;
submitButton.disabled = false;
@ -95,7 +99,6 @@
}
} catch (error) {
clearFileInput();
clearTimeout(timeoutId);
showGameBtn.style.display = "none";
submitButton.textContent = originalButtonText;
@ -117,13 +120,13 @@
return null;
}
}
async function handleSingleDownload(url, formData, isMulti = false, isZip = false) {
const startTime = performance.now();
const file = formData.get('fileInput');
let success = false;
let errorMessage = null;
try {
const response = await fetch(url, { method: "POST", body: formData });
const contentType = response.headers.get("content-type");
@ -146,7 +149,7 @@
const blob = await response.blob();
success = true;
if (contentType.includes("application/pdf") || contentType.includes("image/")) {
clearFileInput();
return handleResponse(blob, filename, !isMulti, isZip);
@ -158,12 +161,11 @@
} catch (error) {
success = false;
errorMessage = error.message;
clearFileInput();
console.error("Error in handleSingleDownload:", error);
throw error;
} finally {
const processingTime = performance.now() - startTime;
// Capture analytics
const pageCount = file && file.type === 'application/pdf' ? await getPDFPageCount(file) : null;
if(analyticsEnabled) {
@ -191,7 +193,7 @@
return filename;
}
async function handleJsonResponse(response) {
const json = await response.json();
const errorMessage = JSON.stringify(json, null, 2);