From 7dc707c185b63bd9358a4dfed40a13af1f0199ba Mon Sep 17 00:00:00 2001 From: Pedro Fonseca Date: Sat, 12 Apr 2025 01:22:28 +0100 Subject: [PATCH] Allow for non-offending files to still be uploaded --- src/main/resources/static/js/fileInput.js | 27 +++++++++++++++++------ 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/resources/static/js/fileInput.js b/src/main/resources/static/js/fileInput.js index 980210a68..0773389c8 100644 --- a/src/main/resources/static/js/fileInput.js +++ b/src/main/resources/static/js/fileInput.js @@ -181,13 +181,26 @@ function setupFileInput(chooser) { const uploadLimit = window.stirlingPDF?.uploadLimit ?? 0; if (uploadLimit > 0) { - const oversizedFile = allFiles.find(f => f.size > uploadLimit); - if (oversizedFile) { - alert(`"${oversizedFile.name}" ${window.stirlingPDF.uploadLimitExceeded} ${window.stirlingPDF.uploadLimitReadable}.`); - allFiles = []; - input.value = ''; - inputContainer.querySelector('#fileInputText').innerHTML = originalText; - return; + const oversizedFiles = allFiles.filter(f => f.size > uploadLimit); + if (oversizedFiles.length > 0) { + const names = oversizedFiles.map(f => `"${f.name}"`).join(', '); + + if (names.length === 1) { + alert(`${names} ${window.stirlingPDF.uploadLimitExceededSingular} ${window.stirlingPDF.uploadLimitReadable}.`); + } else { + alert(`${names} ${window.stirlingPDF.uploadLimitExceededPlural} ${window.stirlingPDF.uploadLimitReadable}.`); + } + + allFiles = allFiles.filter(f => f.size <= uploadLimit); + + const dataTransfer = new DataTransfer(); + allFiles.forEach(f => dataTransfer.items.add(f)); + input.files = dataTransfer.files; + + if (allFiles.length === 0) { + inputContainer.querySelector('#fileInputText').innerHTML = originalText; + return; + } } }