diff --git a/src/modules/ar1/pages/Ar1Signature.js b/src/modules/ar1/pages/Ar1Signature.js index f79bdfb..6613545 100644 --- a/src/modules/ar1/pages/Ar1Signature.js +++ b/src/modules/ar1/pages/Ar1Signature.js @@ -27,6 +27,13 @@ const Ar1Signature = () => { const [loading, setLoading] = useState(true); const [generating, setGenerating] = useState(false); const [uploading, setUploading] = useState(false); + const [uploadAttempt, setUploadAttempt] = useState(0); + const fileUploadRef = useRef(null); + + const resetUploadInput = () => { + try { fileUploadRef.current?.clear?.(); } catch (_) {} + setUploadAttempt(n => n + 1); + }; const refreshForm = () => { Ar1Service.getForm(formId, @@ -76,6 +83,7 @@ const Ar1Signature = () => { const ext = file.name.toLowerCase().slice(file.name.lastIndexOf('.')); if (ext !== '.pdf' && ext !== '.p7m') { if (toast.current) toast.current.show({ severity: 'warn', summary: 'Formato non valido', detail: 'Accettati: .pdf (PAdES) o .p7m (CAdES)' }); + resetUploadInput(); return; } @@ -85,6 +93,7 @@ const Ar1Signature = () => { Ar1Service.uploadSignature(formId, file, (resp) => { setUploading(false); + resetUploadInput(); refreshForm(); const outcome = resp?.outcome; if (outcome === 'VERIFIED') { @@ -98,6 +107,7 @@ const Ar1Signature = () => { }, (err) => { setUploading(false); + resetUploadInput(); if (err?.detail?.code === 'NO_SIGNATURE_DETECTED') { if (toast.current) toast.current.show({ severity: 'error', @@ -152,6 +162,8 @@ const Ar1Signature = () => {
{__('Formati accettati: PDF con firma PAdES oppure file .p7m (CAdES). Dimensione massima 50 MB.', 'gepafin')}