11import { PageContainer } from '@/styles/PageContainer.styles' ;
22import * as Styled from './AnswerApplicationForm.styles' ;
33import Header from '@/components/common/Header/Header' ;
4- import { useParams } from 'react-router-dom' ;
4+ import { useNavigate , useParams } from 'react-router-dom' ;
55import { useGetClubDetail } from '@/hooks/queries/club/useGetClubDetail' ;
66import ClubProfile from '@/pages/ClubDetailPage/components/ClubProfile/ClubProfile' ;
77import { useAnswers } from '@/hooks/useAnswers' ;
88import QuestionAnswerer from '@/pages/AdminPage/application/components/QuestionAnswerer/QuestionAnswerer' ;
99import { useGetApplication } from '@/hooks/queries/application/useGetApplication' ;
1010import { Question } from '@/types/application' ;
1111import Spinner from '@/components/common/Spinner/Spinner' ;
12+ import applyToClub from '@/apis/application/applyToClub' ;
1213
1314const AnswerApplicationForm = ( ) => {
1415 const { clubId } = useParams < { clubId : string } > ( ) ;
16+ const navigate = useNavigate ( ) ;
1517 if ( ! clubId ) return null ;
1618
1719 const { data : clubDetail , error } = useGetClubDetail ( clubId ) ;
18- const { data : formData , isLoading, isError } = useGetApplication ( clubId ) ;
20+ const { data : formData , isLoading, isError, error : applicationError } = useGetApplication ( clubId ) ;
1921
20- const { onAnswerChange, getAnswersById } = useAnswers ( ) ;
22+ const { onAnswerChange, getAnswersById, answers } = useAnswers ( ) ;
2123
2224 if ( isLoading ) return < Spinner /> ;
25+
26+ if ( isError ) {
27+ alert ( applicationError . message )
28+ navigate ( `/club/${ clubId } ` )
29+ return < div > 문제가 발생했어요. 잠시 후 다시 시도해 주세요.</ div > ;
30+ }
2331
24- if ( error || isError ) {
32+ if ( error ) {
2533 return < div > 문제가 발생했어요. 잠시 후 다시 시도해 주세요.</ div > ;
2634 }
2735
@@ -34,6 +42,16 @@ const AnswerApplicationForm = () => {
3442 ) ;
3543 }
3644
45+ const handleSubmit = async ( ) => {
46+ try {
47+ await applyToClub ( clubId , answers ) ;
48+ alert ( '답변이 성공적으로 제출되었습니다.' ) ;
49+ // TODO: 필요시 페이지 이동 등 추가
50+ } catch ( e ) {
51+ alert ( '답변 제출에 실패했습니다. 잠시 후 다시 시도해 주세요.' ) ;
52+ }
53+ } ;
54+
3755 return (
3856 < >
3957 < Header />
@@ -57,7 +75,7 @@ const AnswerApplicationForm = () => {
5775 ) ) }
5876 </ Styled . QuestionsWrapper >
5977 < Styled . ButtonWrapper >
60- < Styled . submitButton > 제출하기</ Styled . submitButton >
78+ < Styled . submitButton onClick = { handleSubmit } > 제출하기</ Styled . submitButton >
6179 </ Styled . ButtonWrapper >
6280 </ PageContainer >
6381 </ >
0 commit comments