@@ -7,6 +7,7 @@ import Btn from '@/common/components/Button';
77import { usePostReview } from '@/features/review/apis/usePostReview' ;
88import ReviewContent from '@/features/review/components/reviewContent' ;
99import { useToast } from '@/common/hooks/useToast' ;
10+ import CustomAlert from '@/common/components/CustomAlert' ;
1011
1112const Review = ( ) => {
1213 const navigate = useNavigate ( ) ;
@@ -18,15 +19,18 @@ const Review = () => {
1819
1920 const [ review , setReview ] = useState ( '' ) ;
2021 const [ isStarClicked , setIsStarClicked ] = useState ( [ false , false , false , false , false ] ) ;
22+ const [ showAlert , setShowAlert ] = useState ( false ) ;
23+
2124 const rating = isStarClicked . filter ( v => v === true ) . length ;
2225
2326 const isValid = rating !== 0 && review !== '' ? 'main' : 'disabled' ;
27+ const isReviewed = rating !== 0 || review !== '' ;
2428
2529 const handleReview = ( e : React . ChangeEvent < HTMLTextAreaElement > ) => {
2630 setReview ( e . target . value ) ;
2731 } ;
2832
29- const onClick = ( ) => {
33+ const onSubmit = ( ) => {
3034 if ( isValid === 'main' ) {
3135 postReview (
3236 {
@@ -44,11 +48,20 @@ const Review = () => {
4448 }
4549 } ;
4650
51+ const onClick = ( ) => {
52+ if ( isReviewed ) {
53+ setShowAlert ( true ) ;
54+ return ;
55+ }
56+
57+ navigate ( - 1 ) ;
58+ } ;
59+
4760 return (
4861 < SafeArea >
4962 < div className = { s . Layout } >
5063 < div className = { s . Wrapper } >
51- < CustomHeader onClick = { ( ) => navigate ( - 1 ) } title = "ํ๊ธฐ ์์ฑํ๊ธฐ" />
64+ < CustomHeader onClick = { onClick } title = "ํ๊ธฐ ์์ฑํ๊ธฐ" />
5265 < ReviewContent
5366 handleReview = { handleReview }
5467 isStarClicked = { isStarClicked }
@@ -58,11 +71,25 @@ const Review = () => {
5871 />
5972 </ div >
6073 < div className = { s . Btn } >
61- < Btn mode = { isValid } onClick = { onClick } >
74+ < Btn mode = { isValid } onClick = { onSubmit } >
6275 ํ๊ธฐ ์์ฑ ์๋ฃ
6376 </ Btn >
6477 </ div >
6578 </ div >
79+ { showAlert && (
80+ < CustomAlert
81+ onYes = { ( ) => {
82+ setShowAlert ( false ) ;
83+ navigate ( - 1 ) ;
84+ } }
85+ subTitle = "์ ๋ง ๊ธ ์์ฑ์ ๊ทธ๋ง๋์ค ๊ฑด๊ฐ์?"
86+ title = "์ง๊ธ ๊ทธ๋ง๋๋ฉด ๋ฆฌ๋ทฐ๊ฐ ์ ์ฅ๋์ง ์์์!"
87+ yesBtn = "๋ค, ๋ค์์ ๋ค์ ์ธ๊ฒ์"
88+ onNo = { ( ) => {
89+ setShowAlert ( false ) ;
90+ } }
91+ />
92+ ) }
6693 </ SafeArea >
6794 ) ;
6895} ;
0 commit comments