@@ -21,6 +21,8 @@ import {
2121import { useAuthStore } from '@/features/auth/stores/useAuthStore' ;
2222import CalendarForForm from '@/shared/components/calendar/components/calendar-for-form' ;
2323import { formatDateToYMD } from '@/shared/components/calendar/libs/utils/formatDateToYMD' ;
24+ import Modal from '@/shared/components/modal/components' ;
25+ import SecondModal from '@/shared/components/modal/components/second-modal/second-modal' ;
2426import { cn } from '@/shared/libs/cn' ;
2527import { useCalendarStore } from '@/shared/libs/stores/useCalendarStore' ;
2628import { useModalStore } from '@/shared/libs/stores/useModalStore' ;
@@ -39,22 +41,37 @@ const ReservationForm = ({
3941 price : number | undefined ;
4042 activityId : number ;
4143} ) => {
42- const { selectedDate, resetSelectedDate } = useCalendarStore ( ) ;
44+ const {
45+ selectedDate,
46+ resetSelectedDate,
47+ year,
48+ month,
49+ setMonth,
50+ setYear,
51+ resetDate,
52+ } = useCalendarStore ( ) ;
53+ const {
54+ appear,
55+ disappearModal,
56+ appearModal,
57+ isDesktop,
58+ secondModalName,
59+ closeSecondModal,
60+ openSecondModal,
61+ } = useModalStore ( ) ;
4362 const [ schedulesInDate , setSchedulesInDate ] = useState <
44- TimeSlot [ ] | undefined [ ] | undefined
63+ TimeSlot [ ] | undefined
4564 > ( [ ] ) ;
65+ const [ scheduledDate , setScheduledDate ] = useState < AvailableScheduleList > ( ) ;
4666 const [ selectedTime , setSelectedTime ] = useState ( '' ) ;
47- const { appear, disappearModal, appearModal, isDesktop } = useModalStore ( ) ;
4867 const [ nextStep , setNextStep ] = useState ( false ) ;
49- const { mutate } = useReservationMutation ( activityId ) ;
5068 const isTablet = useIsTablet ( ) ;
51- const { year , month , setMonth , setYear } = useCalendarStore ( ) ;
52- const [ scheduledDate , setScheduledDate ] = useState < AvailableScheduleList > ( ) ;
69+ const { isLoggedIn } = useAuthStore ( ) ;
70+ const { mutate } = useReservationMutation ( activityId ) ;
5371 const { data, isLoading, error } = useSchedulesQuery ( activityId , {
5472 year : String ( year ) ,
5573 month : String ( month + 1 ) . padStart ( 2 , '0' ) ,
5674 } ) ;
57- const { isLoggedIn } = useAuthStore ( ) ;
5875
5976 // 리액트훅폼
6077 const {
@@ -90,8 +107,9 @@ const ReservationForm = ({
90107 const today = new Date ( ) ;
91108 setYear ( today . getFullYear ( ) ) ;
92109 setMonth ( today . getMonth ( ) ) ;
110+ resetDate ( ) ;
93111 } ;
94- } , [ setMonth , setYear ] ) ;
112+ } , [ setMonth , setYear , resetDate ] ) ;
95113
96114 return (
97115 < >
@@ -107,8 +125,10 @@ const ReservationForm = ({
107125 mutate ( data , {
108126 onSuccess : ( res ) => {
109127 console . log ( '✅ 예약 성공:' , res ) ;
128+ openSecondModal ( undefined , 'success' ) ;
110129 addReservation ( data . scheduleId ) ; //save id in localStorage
111- resetSelectedDate ( ) ; //🐛이거 해도 제출후 다시 열어보면, 이전 선택 날짜가 칠해져있음...뭔가 리렌더링 기회가 없는건가
130+ resetSelectedDate ( ) ; //🐛이거 해도 제출후 다시 열어보면, 이전 선택 날짜가 칠해져있음...:스타일링은 date 담당이기 떄문이었다.
131+ resetDate ( ) ; //이거까지 해야함
112132 setSelectedTime ( '' ) ;
113133 reset ( ) ; // 제출 후 폼 초기화
114134 } ,
@@ -405,6 +425,20 @@ const ReservationForm = ({
405425 </ button >
406426 </ section >
407427 </ form >
428+ { secondModalName === 'success' && (
429+ < SecondModal type = "confirm" extraClassName = "md:pb-[1rem]" >
430+ < Modal . Header > 예약이 완료되었습니다.</ Modal . Header >
431+ < div className = "w-[18rem] md:w-[20rem]" >
432+ < Modal . Button
433+ color = "blue"
434+ ariaLabel = "확인"
435+ onClick = { closeSecondModal }
436+ >
437+ 확인
438+ </ Modal . Button >
439+ </ div >
440+ </ SecondModal >
441+ ) }
408442 </ >
409443 ) ;
410444} ;
0 commit comments