diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index fc34aa3f..37673674 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=يجب ألا يكون الملف فارغًا أو خ database.failedImportFile=فشل استيراد الملف session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 8f9dc2db..4d92ae1f 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Файлът не трябва да е нулев ил database.failedImportFile=Неуспешно импортиране на файл session.expired=Вашата сесия е изтекла. Моля, опреснете страницата и опитайте отново. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 8569f410..02d1c556 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_cs_CZ.properties b/src/main/resources/messages_cs_CZ.properties index e4920e4f..1fd579b2 100644 --- a/src/main/resources/messages_cs_CZ.properties +++ b/src/main/resources/messages_cs_CZ.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_da_DK.properties b/src/main/resources/messages_da_DK.properties index 47740a2d..bc236d05 100644 --- a/src/main/resources/messages_da_DK.properties +++ b/src/main/resources/messages_da_DK.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Fil må ikke være null eller tom database.failedImportFile=Kunne ikke importere fil session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index 87dc3f79..41791505 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Datei darf nicht null oder leer sein database.failedImportFile=Dateiimport fehlgeschlagen session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index e6939cf5..bdc60f14 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index f124bec8..ebfce1f5 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed to import file session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 2da78640..363e8345 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index a5b9a212..04951c50 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=El archivo no debe ser nulo o vacío. database.failedImportFile=Archivo de importación fallido session.expired=Tu sesión ha caducado. Actualice la página e inténtelo de nuevo. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 8bbb78d2..a778d12a 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index ff7277c8..8d4b4024 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Votre session a expiré. Veuillez recharger la page et réessayer. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ga_IE.properties b/src/main/resources/messages_ga_IE.properties index 07735d0c..c4d7fde6 100644 --- a/src/main/resources/messages_ga_IE.properties +++ b/src/main/resources/messages_ga_IE.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Níor cheart go mbeadh an comhad ar neamhní nó folamh database.failedImportFile=Theip ar iompórtáil an chomhaid session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 65fd2e69..f7b4b0a5 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_hr_HR.properties b/src/main/resources/messages_hr_HR.properties index acc2b3d0..2ec26341 100644 --- a/src/main/resources/messages_hr_HR.properties +++ b/src/main/resources/messages_hr_HR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 50d22e1b..98e4aebb 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index 80611663..94ea40a4 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Berkas tidak boleh null atau kosong database.failedImportFile=Impor Berkas Gagal session.expired=Sesi Anda telah kedaluwarsa. Silakan muat ulang halaman dan coba lagi. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 899b9d73..0899a191 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Il file non deve essere nullo o vuoto database.failedImportFile=Importazione file non riuscita session.expired=La tua sessione è scaduta. Aggiorna la pagina e riprova. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 992ddcb5..94e6ba1b 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=ファイルは null または空であってはなり database.failedImportFile=ファイルのインポートに失敗 session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index a26578d2..794a2b79 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index cdbfbe71..124a2a89 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_no_NB.properties b/src/main/resources/messages_no_NB.properties index 3b174504..e86f4b9e 100644 --- a/src/main/resources/messages_no_NB.properties +++ b/src/main/resources/messages_no_NB.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Fil må ikke være tom eller null database.failedImportFile=Import av fil mislyktes session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index a384c870..4db148c1 100755 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Plik nie może być pusty database.failedImportFile=Nie udało się zaimportować pliku session.expired=Twoja sesja wygasła. Odśwież stronę i spróbuj ponownie. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index 5cc5c8db..10605c7b 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=O arquivo não pode estar nulo ou vazio database.failedImportFile=Falha ao importar arquivo session.expired=Sua sessão expirou. Por gentileza atualize a página e tente novamente. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index 6ee92eb6..7624092e 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 3d1f7d47..f86a2d73 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Fișierul nu trebuie să fie nul sau gol database.failedImportFile=Importul Fișierului a Eșuat session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 8c915bb4..097ef55c 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_sk_SK.properties b/src/main/resources/messages_sk_SK.properties index d87128a6..f2881d77 100644 --- a/src/main/resources/messages_sk_SK.properties +++ b/src/main/resources/messages_sk_SK.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index 61a7d942..f0ff41eb 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index d39d4b3a..9943f946 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Filen får inte vara null eller tom database.failedImportFile=Misslyckades med att importera fil session.expired=Din session har löpt ut. Uppdatera sidan och försök igen. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_th_TH.properties b/src/main/resources/messages_th_TH.properties index 68b9d36d..25ca1d57 100644 --- a/src/main/resources/messages_th_TH.properties +++ b/src/main/resources/messages_th_TH.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=ไฟล์ต้องไม่ว่างเปล database.failedImportFile=การนำเข้าไฟล์ล้มเหลว session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index 60e2e5f4..b731da02 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Dosya yok veya boş olmamalıdır database.failedImportFile=Dosya İçe Aktarılamadı session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index 2027a834..ca018b93 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=File must not be null or empty database.failedImportFile=Failed Import File session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_vi_VN.properties b/src/main/resources/messages_vi_VN.properties index b7a4d1ed..15ca0653 100644 --- a/src/main/resources/messages_vi_VN.properties +++ b/src/main/resources/messages_vi_VN.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=Tệp không được để trống hoặc rỗng database.failedImportFile=Không thể nhập tệp session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index 7be7cb78..506dee41 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=文件不能为空 database.failedImportFile=导入文件失败 session.expired=Your session has expired. Please refresh the page and try again. +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index fd212da9..98d72902 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -246,6 +246,7 @@ database.fileNullOrEmpty=檔案不得為空或空白 database.failedImportFile=匯入檔案失敗 session.expired=您的工作階段已過期。請重新整理頁面並再試一次。 +session.refreshPage=Refresh Page ############# # HOME-PAGE # diff --git a/src/main/resources/static/js/downloader.js b/src/main/resources/static/js/downloader.js index bbe16ba5..1933c4fb 100644 --- a/src/main/resources/static/js/downloader.js +++ b/src/main/resources/static/js/downloader.js @@ -1,288 +1,294 @@ -function showErrorBanner(message, stackTrace) { - const errorContainer = document.getElementById("errorContainer"); - errorContainer.style.display = "block"; // Display the banner - document.querySelector("#errorContainer .alert-heading").textContent = "Error"; - document.querySelector("#errorContainer p").textContent = message; - document.querySelector("#traceContent").textContent = stackTrace; -} +(function() { -function showSessionExpiredPrompt() { - const errorContainer = document.getElementById("errorContainer"); - errorContainer.style.display = "block"; - document.querySelector("#errorContainer .alert-heading").textContent = sessionExpired; - document.querySelector("#errorContainer p").textContent = sessionExpired; - document.querySelector("#traceContent").textContent = ""; + const { pdfPasswordPrompt, multipleInputsForSingleRequest, disableMultipleFiles, remoteCall, sessionExpired, refreshPage, error } = window.stirlingPDF; - // Optional: Add a refresh button - const refreshButton = document.createElement("button"); - refreshButton.textContent = "Refresh Page"; - refreshButton.className = "btn btn-primary mt-3"; - refreshButton.onclick = () => location.reload(); - errorContainer.appendChild(refreshButton); -} + function showErrorBanner(message, stackTrace) { + const errorContainer = document.getElementById("errorContainer"); + errorContainer.style.display = "block"; // Display the banner + errorContainer.querySelector(".alert-heading").textContent = error; + errorContainer.querySelector("p").textContent = message; + document.querySelector("#traceContent").textContent = stackTrace; + } -let firstErrorOccurred = false; + function showSessionExpiredPrompt() { + const errorContainer = document.getElementById("errorContainer"); + errorContainer.style.display = "block"; + errorContainer.querySelector(".alert-heading").textContent = sessionExpired; + errorContainer.querySelector("p").textContent = sessionExpired; + document.querySelector("#traceContent").textContent = ""; -$(document).ready(function () { - $("form").submit(async function (event) { - event.preventDefault(); - firstErrorOccurred = false; - const url = this.action; - const files = $("#fileInput-input")[0].files; - const formData = new FormData(this); + // Optional: Add a refresh button + const refreshButton = document.createElement("button"); + refreshButton.textContent = refreshPage; + refreshButton.className = "btn btn-primary mt-3"; + refreshButton.onclick = () => location.reload(); + errorContainer.appendChild(refreshButton); + } + let firstErrorOccurred = false; + + $(document).ready(function () { + $("form").submit(async function (event) { + event.preventDefault(); + firstErrorOccurred = false; + const url = this.action; + const files = $("#fileInput-input")[0].files; + const formData = new FormData(this); + + // Remove empty file entries + for (let [key, value] of formData.entries()) { + if (value instanceof File && !value.name) { + formData.delete(key); + } + } + const override = $("#override").val() || ""; + const originalButtonText = $("#submitBtn").text(); + $("#submitBtn").text("Processing..."); + console.log(override); + + // Set a timeout to show the game button if operation takes more than 5 seconds + const timeoutId = setTimeout(() => { + var boredWaiting = localStorage.getItem("boredWaiting") || "disabled"; + const showGameBtn = document.getElementById("show-game-btn"); + if (boredWaiting === "enabled" && showGameBtn) { + showGameBtn.style.display = "block"; + showGameBtn.parentNode.insertBefore(document.createElement('br'), showGameBtn.nextSibling); + } + }, 5000); + + try { + if (remoteCall === true) { + if (override === "multi" || (!multipleInputsForSingleRequest && files.length > 1 && override !== "single")) { + await submitMultiPdfForm(url, files); + } else { + await handleSingleDownload(url, formData); + } + } + clearTimeout(timeoutId); + $("#submitBtn").text(originalButtonText); + + // After process finishes, check for boredWaiting and gameDialog open status + const boredWaiting = localStorage.getItem("boredWaiting") || "disabled"; + const gameDialog = document.getElementById('game-container-wrapper'); + if (boredWaiting === "enabled" && gameDialog && gameDialog.open) { + // Display a green banner at the bottom of the screen saying "Download complete" + let downloadCompleteText = "Download Complete"; + if(window.downloadCompleteText){ + downloadCompleteText = window.downloadCompleteText; + } + $("body").append('
'); + setTimeout(function() { + $("#download-complete-banner").fadeOut("slow", function() { + $(this).remove(); // Remove the banner after fading out + }); + }, 5000); // Banner will fade out after 5 seconds + } + + } catch (error) { + clearTimeout(timeoutId); + handleDownloadError(error); + $("#submitBtn").text(originalButtonText); + console.error(error); + } + }); + }); + + async function handleSingleDownload(url, formData, isMulti = false, isZip = false) { + try { + const response = await fetch(url, { method: "POST", body: formData }); + const contentType = response.headers.get("content-type"); + + if (!response.ok) { + if (response.status === 401) { + // Handle 401 Unauthorized error + showSessionExpiredPrompt(); + return; + } + if (contentType && contentType.includes("application/json")) { + console.error("Throwing error banner, response was not okay"); + return handleJsonResponse(response); + } + throw new Error(`HTTP error! status: ${response.status}`); + } + + const contentDisposition = response.headers.get("Content-Disposition"); + let filename = getFilenameFromContentDisposition(contentDisposition); + + const blob = await response.blob(); + if (contentType.includes("application/pdf") || contentType.includes("image/")) { + return handleResponse(blob, filename, !isMulti, isZip); + } else { + return handleResponse(blob, filename, false, isZip); + } + } catch (error) { + console.error("Error in handleSingleDownload:", error); + throw error; + } + } + + function getFilenameFromContentDisposition(contentDisposition) { + let filename; + + if (contentDisposition && contentDisposition.indexOf("attachment") !== -1) { + filename = decodeURIComponent(contentDisposition.split("filename=")[1].replace(/"/g, "")).trim(); + } else { + // If the Content-Disposition header is not present or does not contain the filename, use a default filename + filename = "download"; + } + + return filename; + } + + async function handleJsonResponse(response) { + const json = await response.json(); + const errorMessage = JSON.stringify(json, null, 2); + if ( + errorMessage.toLowerCase().includes("the password is incorrect") || + errorMessage.toLowerCase().includes("Password is not provided") || + errorMessage.toLowerCase().includes("PDF contains an encryption dictionary") + ) { + if (!firstErrorOccurred) { + firstErrorOccurred = true; + alert(pdfPasswordPrompt); + } + } else { + showErrorBanner(json.error + ":" + json.message, json.trace); + } + } + + async function handleResponse(blob, filename, considerViewOptions = false, isZip = false) { + if (!blob) return; + const downloadOption = localStorage.getItem("downloadOption"); + if (considerViewOptions) { + if (downloadOption === "sameWindow") { + const url = URL.createObjectURL(blob); + window.location.href = url; + return; + } else if (downloadOption === "newWindow") { + const url = URL.createObjectURL(blob); + window.open(url, "_blank"); + return; + } + } + if (!isZip) { + downloadFile(blob, filename); + } + return { filename, blob }; + } + + function handleDownloadError(error) { + const errorMessage = error.message; + showErrorBanner(errorMessage); + } + + let urls = []; // An array to hold all the URLs + + function downloadFile(blob, filename) { + if (!(blob instanceof Blob)) { + console.error("Invalid blob passed to downloadFile function"); + return; + } + const url = URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = filename; + a.click(); + urls.push(url); // Store the URL so it doesn't get garbage collected too soon + + return { filename, blob }; + } + + async function submitMultiPdfForm(url, files) { + const zipThreshold = parseInt(localStorage.getItem("zipThreshold"), 10) || 4; + const zipFiles = files.length > zipThreshold; + let jszip = null; + // Add Space below Progress Bar before Showing + $('.progressBarContainer').after($('