diff --git a/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx b/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx index 34699d7d..15935b7d 100644 --- a/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx +++ b/spiffworkflow-frontend/src/routes/ProcessModelShow.tsx @@ -362,27 +362,76 @@ export default function ProcessModelShow() { ); }; + const [fileUploadEvent, setFileUploadEvent] = useState(null); + const [duplicateFilename, setDuplicateFilename] = useState(''); + const [showOverwriteConfirmationPrompt, setShowOverwriteConfirmationPrompt] = + useState(false); + + const doFileUpload = (event: any) => { + event.preventDefault(); + const url = `/process-models/${modifiedProcessModelId}/files`; + const formData = new FormData(); + formData.append('file', filesToUpload[0]); + formData.append('fileName', filesToUpload[0].name); + HttpService.makeCallToBackend({ + path: url, + successCallback: onUploadedCallback, + httpMethod: 'POST', + postBody: formData, + }); + setFilesToUpload(null); + }; + const handleFileUploadCancel = () => { setShowFileUploadModal(false); setFilesToUpload(null); }; + const handleOverwriteFileConfirm = () => { + setShowOverwriteConfirmationPrompt(false); + doFileUpload(fileUploadEvent); + }; + const handleOverwriteFileCancel = () => { + setShowOverwriteConfirmationPrompt(false); + setFilesToUpload(null); + }; + + const confirmOverwriteFileDialog = () => { + return ( + + ); + }; + const displayOverwriteConfirmation = (filename: String) => { + setDuplicateFilename(filename); + setShowOverwriteConfirmationPrompt(true); + }; + + const checkDuplicateFile = (event: any) => { + if (processModel && processModel.files.length > 0) { + processModel.files.forEach((file) => { + if (file.name === filesToUpload[0].name) { + displayOverwriteConfirmation(file.name); + setFileUploadEvent(event); + } + }); + } + }; const handleFileUpload = (event: any) => { if (processModel) { - event.preventDefault(); - const url = `/process-models/${modifiedProcessModelId}/files`; - const formData = new FormData(); - formData.append('file', filesToUpload[0]); - formData.append('fileName', filesToUpload[0].name); - HttpService.makeCallToBackend({ - path: url, - successCallback: onUploadedCallback, - httpMethod: 'POST', - postBody: formData, - }); + checkDuplicateFile(event); } setShowFileUploadModal(false); - setFilesToUpload(null); }; const fileUploadModal = () => { @@ -550,6 +599,7 @@ export default function ProcessModelShow() { return ( <> {fileUploadModal()} + {confirmOverwriteFileDialog()}