1- import React , { useState , FormEvent } from "react" ;
1+ import React , { useState , useRef , FormEvent } from "react" ;
22import { useNavigate } from "react-router-dom" ;
33import { useQuery , useQueryClient } from "@tanstack/react-query" ;
44import { useUser } from "../queries" ;
@@ -45,6 +45,7 @@ export const BuildAudit = () => {
4545 const [ auditNameValid , setAuditNameValid ] = useState ( false ) ;
4646 const [ isSaving , setIsSaving ] = useState ( false ) ;
4747 const [ isSavingAndRunning , setIsSavingAndRunning ] = useState ( false ) ;
48+ const submittingRef = useRef ( false ) ;
4849 const [ scanFrequency , setScanFrequency ] = useState ( "Manually" ) ;
4950
5051 const [ validRemoteCsv , setValidRemoteCsv ] = useState ( false ) ;
@@ -101,6 +102,7 @@ export const BuildAudit = () => {
101102
102103 const saveAndRunAudit = async ( e : FormEvent ) => {
103104 e . preventDefault ( ) ;
105+ if ( submittingRef . current ) return ;
104106 if ( pages . length === 0 ) {
105107 window . alert ( `You need to add at least 1 URL to your audit.` ) ;
106108 return ;
@@ -110,6 +112,7 @@ export const BuildAudit = () => {
110112 const formData = new FormData ( form ) ;
111113 const auditData = buildAuditData ( formData ) ;
112114 console . log ( "Audit Data (Save & Run):" , JSON . stringify ( auditData ) ) ;
115+ submittingRef . current = true ;
113116 setIsSavingAndRunning ( true ) ;
114117 try {
115118 const response = ( await (
@@ -123,13 +126,15 @@ export const BuildAudit = () => {
123126 await createLog ( `Audit created and audit run started!` , response . id ) ;
124127 navigate ( `/audits/${ response ?. id } ` ) ;
125128 } finally {
129+ submittingRef . current = false ;
126130 queryClient . invalidateQueries ( { queryKey : [ "audits" ] } ) ;
127131 setIsSavingAndRunning ( false ) ;
128132 }
129133 } ;
130134
131135 const saveAudit = async ( e : FormEvent ) => {
132136 e . preventDefault ( ) ;
137+ if ( submittingRef . current ) return ;
133138 if ( pages . length === 0 ) {
134139 window . alert ( `You need to add at least 1 URL to your audit.` ) ;
135140 return ;
@@ -140,6 +145,7 @@ export const BuildAudit = () => {
140145 const auditData = buildAuditData ( formData ) ;
141146
142147 console . log ( "Audit Data (Save):" , JSON . stringify ( auditData ) ) ;
148+ submittingRef . current = true ;
143149 setIsSaving ( true ) ;
144150 try {
145151 const response = ( await (
@@ -153,6 +159,7 @@ export const BuildAudit = () => {
153159 await createLog ( `Audit created!` , response . id ) ;
154160 navigate ( `/audits/${ response ?. id } ` ) ;
155161 } finally {
162+ submittingRef . current = false ;
156163 queryClient . invalidateQueries ( { queryKey : [ "audits" ] } ) ;
157164 setIsSaving ( false ) ;
158165 }
0 commit comments