From ebbb210b6fa326eb77b85837c0f16431f602f37a Mon Sep 17 00:00:00 2001 From: Noemi Pusceddu Date: Thu, 8 May 2025 11:46:03 +0200 Subject: [PATCH] update FileUpload --- .../FormField/components/Fileupload/index.js | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/src/components/FormField/components/Fileupload/index.js b/src/components/FormField/components/Fileupload/index.js index a8218a7..b812910 100644 --- a/src/components/FormField/components/Fileupload/index.js +++ b/src/components/FormField/components/Fileupload/index.js @@ -13,6 +13,7 @@ import getPropeMimeLabels from '../../../../helpers/getPropeMimeLabels'; import { FileUpload } from 'primereact/fileupload'; import { Tag } from 'primereact/tag'; import { Button } from 'primereact/button'; +import { Messages } from 'primereact/messages'; import { defaultMaxFileSize, mimeTypes } from '../../../../configData'; import getFormatedFileSizeText from '../../../../helpers/getFormatedFileSizeText'; @@ -47,24 +48,48 @@ const Fileupload = ({ const [acceptFormats, setAcceptFormats] = useState(''); const [formatsForInput, setFormatsForInput] = useState(''); const inputRef = useRef(); + const messagesRef = useRef(null); const customBase64Uploader = (event) => { const formData = new FormData() + const filesToUpload = []; + const uploadedFiles = inputRef.current ? inputRef.current.getUploadedFiles() : []; + const currentFiles = stateFieldData; + for (const file of event.files) { - formData.append('file', file) + const isDuplicate = [...uploadedFiles, ...currentFiles].some( + (uploadedFile)=>uploadedFile.name === file.name + ); + + if(isDuplicate){ + messagesRef.current.show({ + severity: 'error', + summary: __('Attenzione', 'gepafin'), + detail: `Il file con nome "${file.name}" è già stato caricato.`, + life: 10000 + }); + } else { + formData.append('file', file) + filesToUpload.push(file); + } + + } + if(filesToUpload.length > 0 ){ + FileUploadService.uploadFile(sourceId, formData, callback, errorCallback, [ + ['documentType', doctype.toUpperCase()], + ['sourceType', source.toUpperCase()] + ]); } - FileUploadService.uploadFile(sourceId, formData, callback, errorCallback, [ - ['documentType', doctype.toUpperCase()], - ['sourceType', source.toUpperCase()] - ]); }; - const callback = (data) => { + const callback = (data, uploadedFiles) => { if (data.status === 'SUCCESS') { - setStateFieldData(data.data); - const uploadedFiles = inputRef.current.getUploadedFiles(); - setDataFn(fieldName, [...uploadedFiles, ...data.data], { shouldValidate: true }); + setStateFieldData(prevState => [...prevState, ...data.data]); + const currentUploadedFiles = inputRef.current.getUploadedFiles() || []; inputRef.current.setFiles([]); + + setDataFn(fieldName, [...currentUploadedFiles, ...data.data], { shouldValidate: true }); + saveFormCallback(); } } @@ -204,6 +229,7 @@ const Fileupload = ({ return ( sourceId || sourceId === 0 ? <> +