@@ -10,38 +10,44 @@ import * as styles from "./analyzing.css";
1010
1111import type { CustomErrorResponse } from "@/shared/api/generate/http-client" ;
1212
13+ let isRequesting = false ;
14+
1315export const Analyzing = ( { nextStep } : { nextStep : ( ) => void } ) => {
1416 const { company, experience, jobDescription, setReportId } = useReportStore ( ) ;
15- const { mutate } = useCreateReport ( ) ;
17+ const { mutateAsync } = useCreateReport ( ) ;
1618
1719 // 에러 핸들링 (임시)
1820 const [ open , setOpen ] = useState ( false ) ;
1921 const [ errorMsg , setErrorMsg ] = useState ( "" ) ;
2022
2123 useEffect ( ( ) => {
22- mutate (
23- {
24- companyId : company ?. id ?? 0 ,
25- experienceId : experience ?. id ?? 0 ,
26- jobDescription : jobDescription ,
27- } ,
28- {
29- onSuccess : ( response ) => {
30- setReportId ( response ?. id ?? 0 ) ;
31- nextStep ( ) ;
32- } ,
33- onError : ( error : CustomErrorResponse ) => {
34- const serverMessage =
35- error . message || "리포트 생성 중 에러가 발생했습니다" ;
36- setErrorMsg ( serverMessage ) ;
37- setOpen ( true ) ;
24+ if ( isRequesting ) return ;
25+ isRequesting = true ;
26+
27+ const handleRequest = async ( ) => {
28+ try {
29+ const response = await mutateAsync ( {
30+ companyId : company ?. id ?? 0 ,
31+ experienceId : experience ?. id ?? 0 ,
32+ jobDescription : jobDescription ,
33+ } ) ;
3834
39- setTimeout ( ( ) => setOpen ( false ) , 3000 ) ;
40- } ,
35+ setReportId ( response ?. id ?? 0 ) ;
36+ nextStep ( ) ;
37+ } catch ( err ) {
38+ const error = err as CustomErrorResponse ;
39+ const serverMessage =
40+ error . message || "리포트 생성 중 에러가 발생했습니다" ;
41+ setErrorMsg ( serverMessage ) ;
42+ setOpen ( true ) ;
43+ setTimeout ( ( ) => setOpen ( false ) , 3000 ) ;
44+ } finally {
45+ isRequesting = false ;
4146 }
42- ) ;
43- } , [ nextStep , setReportId , mutate ] ) ;
47+ } ;
4448
49+ handleRequest ( ) ;
50+ } , [ ] ) ;
4551 return (
4652 < >
4753 < div className = { styles . layout } >
0 commit comments