@@ -26,14 +26,13 @@ const SignupPage: React.FC = () => {
26
26
marketingConsent ?: number ;
27
27
loginType : 'local' | 'social' | 'naver' | 'google' | 'kakao' ;
28
28
} > ( {
29
- loginType : 'local' ,
29
+ loginType : 'local'
30
30
} ) ;
31
31
32
32
const router = useRouter ( ) ;
33
33
const { isLoggedIn } = useAuthStore ( ) ;
34
34
35
35
const { setOpen, setModalType } = useModalStore ( ) ;
36
-
37
36
38
37
useEffect ( ( ) => {
39
38
if ( isLoggedIn ) {
@@ -45,14 +44,18 @@ const SignupPage: React.FC = () => {
45
44
const searchParams = new URLSearchParams ( window . location . search ) ;
46
45
const verifyToken = searchParams . get ( 'verify' ) ;
47
46
const email = searchParams . get ( 'email' ) ;
48
- const loginType = searchParams . get ( 'loginType' ) as 'naver' | 'google' | 'kakao' | null ;
47
+ const loginType = searchParams . get ( 'loginType' ) as
48
+ | 'naver'
49
+ | 'google'
50
+ | 'kakao'
51
+ | null ;
49
52
50
53
if ( verifyToken && email && loginType && ! isSocialLogin ) {
51
54
setIsSocialLogin ( true ) ;
52
55
setFormData ( ( prev ) => ( {
53
56
...prev ,
54
57
email,
55
- loginType,
58
+ loginType
56
59
} ) ) ;
57
60
58
61
setCookie ( 'verify_token' , verifyToken ) ;
@@ -80,23 +83,22 @@ const SignupPage: React.FC = () => {
80
83
const handleSubmit = async ( ) => {
81
84
try {
82
85
const verifyToken = getCookie ( 'verify_token' ) ;
83
-
86
+
84
87
if ( ! verifyToken ) {
85
88
throw new Error ( 'Verify token이 없습니다.' ) ;
86
89
}
87
-
90
+
88
91
const authHeaders = {
89
92
cookie : '' ,
90
- Verify : verifyToken ,
93
+ Verify : verifyToken
91
94
} ;
92
-
95
+
93
96
const response = await finalSignup ( formData , authHeaders ) ;
94
-
97
+
95
98
if ( response === '회원가입 완료' ) {
96
99
setModalType ( 'signupComplete' ) ;
97
100
setOpen ( true ) ;
98
101
}
99
-
100
102
} catch ( error ) {
101
103
console . error ( '서버 요청 오류:' , error ) ;
102
104
alert ( '회원가입에 실패했습니다. 다시 시도해주세요.' ) ;
@@ -109,9 +111,18 @@ const SignupPage: React.FC = () => {
109
111
e . returnValue = '' ;
110
112
} ;
111
113
114
+ let hasShownAlert = false ; // 추가
115
+
112
116
const pushStateAndShowAlert = ( ) => {
113
- window . history . pushState ( null , '' , window . location . href ) ;
114
- alert ( '페이지를 나가시면 진행 중인 작업이 저장되지 않습니다.' ) ;
117
+ // alert('페이지를 나가시면 진행 중인 작업이 저장되지 않습니다.');
118
+ // window.history.pushState(null, '', window.location.href);
119
+ if ( ! hasShownAlert ) {
120
+ alert ( '페이지를 나가시면 진행 중인 작업이 저장되지 않습니다.' ) ;
121
+ hasShownAlert = true ;
122
+ } else {
123
+ window . removeEventListener ( 'popstate' , pushStateAndShowAlert ) ;
124
+ window . history . back ( ) ;
125
+ }
115
126
} ;
116
127
117
128
window . addEventListener ( 'beforeunload' , handleBeforeUnload ) ;
@@ -135,7 +146,11 @@ const SignupPage: React.FC = () => {
135
146
< Step2 onNext = { handleNext } onUpdate = { ( data ) => handleUpdate ( data ) } />
136
147
) }
137
148
{ currentStep === 3 && (
138
- < Step3 onNext = { handleNext } onUpdate = { ( data ) => handleUpdate ( data ) } email = { formData . email || '' } />
149
+ < Step3
150
+ onNext = { handleNext }
151
+ onUpdate = { ( data ) => handleUpdate ( data ) }
152
+ email = { formData . email || '' }
153
+ />
139
154
) }
140
155
{ currentStep === 4 && (
141
156
< Step4 onNext = { handleSubmit } onUpdate = { ( data ) => handleUpdate ( data ) } />
@@ -147,4 +162,4 @@ const SignupPage: React.FC = () => {
147
162
) ;
148
163
} ;
149
164
150
- export default SignupPage ;
165
+ export default SignupPage ;
0 commit comments