11import React , { useState } from 'react' ;
22import { useNavigate } from 'react-router-dom' ;
33
4- import { OODDFrame } from '../../components/Frame/Frame ' ;
5- import BottomButton from '../../components/BottomButton ' ;
6- import Modal from '../../components/Modal ' ;
4+ import { patchUserInfoApi } from '@/apis/user ' ;
5+ import type { PatchUserInfoRequest } from '@/apis/user/dto ' ;
6+ import { handleError } from '@/apis/util/handleError ' ;
77
8- import { StyledText } from '../../components/Text/StyledText' ;
9- import { SignUpContainer , LogoWrapper , IntroWrapper , NickNameContainer , NickName , TapStyled , LogoImg } from './style' ;
8+ import OODDlogo from '@/assets/default/oodd.svg' ;
109
11- import OODDlogo from '../../assets/default/oodd.svg' ;
10+ import { OODDFrame } from '@/components/Frame/Frame' ;
11+ import { StyledText } from '@/components/Text/StyledText' ;
12+ import BottomButton from '@/components/BottomButton' ;
13+ import Modal from '@/components/Modal' ;
1214
13- import { patchUserInfoApi } from '../../apis/user' ;
14- import { handleError } from '../../apis/util/handleError' ;
15- import { PatchUserInfoRequest } from '../../apis/user/dto' ;
15+ import { getCurrentUserId } from '@/utils/getCurrentUserId' ;
16+
17+ import {
18+ SignUpLayout ,
19+ LogoWrapper ,
20+ SignupStepContainer ,
21+ InputContainer ,
22+ InputValue ,
23+ TapToEdit ,
24+ LogoImg ,
25+ } from './style' ;
1626
1727type PartialUserInfoRequest = Pick < PatchUserInfoRequest , 'name' | 'birthDate' | 'phoneNumber' | 'nickname' > ;
1828
1929const SignUp : React . FC = ( ) => {
20- const navigate = useNavigate ( ) ;
21-
22- const my_id = Number ( localStorage . getItem ( 'my_id' ) ) ;
23- const token = localStorage . getItem ( 'new_jwt_token' ) ;
24-
2530 const [ isModalOpen , setIsModalOpen ] = useState ( false ) ;
2631 const [ modalMessage , setModalMessage ] = useState ( '' ) ;
2732 const [ modalType , setModalType ] = useState ( '' ) ;
2833
2934 const [ currentStep , setCurrentStep ] = useState ( 1 ) ;
3035 const [ formData , setFormData ] = useState < PartialUserInfoRequest > ( {
31- // 이름, 생년월일 등 개별적으로 상태 관리하지 않고 통합
3236 name : '' ,
3337 birthDate : '' ,
3438 phoneNumber : '' ,
3539 nickname : '' , //초기 값
3640 } ) ;
3741
42+ const navigate = useNavigate ( ) ;
43+
44+ const currentUserId = getCurrentUserId ( ) ;
45+ const token = localStorage . getItem ( 'new_jwt_token' ) ;
46+
3847 const handleInputChange = ( field : keyof PatchUserInfoRequest ) => ( e : React . ChangeEvent < HTMLInputElement > ) => {
3948 setFormData ( ( prevData ) => ( { ...prevData , [ field ] : e . target . value } ) ) ;
4049 } ;
@@ -106,19 +115,20 @@ const SignUp: React.FC = () => {
106115
107116 if ( currentStep < steps . length ) {
108117 setCurrentStep ( currentStep + 1 ) ;
109- } else if ( my_id && token ) {
118+ } else if ( currentUserId && token ) {
110119 const requestData : PartialUserInfoRequest = {
111120 name : formData . name ,
112121 nickname : formData . nickname ,
113122 birthDate : formData . birthDate ,
114123 phoneNumber : formData . phoneNumber ,
115124 } ;
116- await patchUserInfo ( requestData , my_id ) ;
125+ await patchUserInfo ( requestData , currentUserId ) ;
117126 }
118127 } ;
119- const patchUserInfo = async ( requestData : any , my_id : number ) => {
128+
129+ const patchUserInfo = async ( requestData : PartialUserInfoRequest , currentUserId : number ) => {
120130 try {
121- const response = await patchUserInfoApi ( requestData , my_id ) ;
131+ const response = await patchUserInfoApi ( requestData , currentUserId ) ;
122132 console . log ( '수정 성공:' , response . data ) ;
123133 setModalMessage ( '회원가입에 성공했습니다!' ) ;
124134 setIsModalOpen ( true ) ;
@@ -135,11 +145,12 @@ const SignUp: React.FC = () => {
135145 const handleModalClose = ( ) => {
136146 setIsModalOpen ( false ) ;
137147 if ( modalType === 'success' ) {
138- navigate ( '/terms-agreement' ) ; // 회원가입 정보 입력 되면, 이용약관 동의 페이지로
148+ navigate ( '/signup/ terms-agreement' ) ; // 회원가입 정보 입력 되면, 이용약관 동의 페이지로
139149 } else if ( modalType === 'fail' ) {
140150 navigate ( '/login' ) ;
141151 }
142152 } ;
153+
143154 const handleKeyDown = ( event : React . KeyboardEvent ) => {
144155 if ( event . key === 'Enter' ) {
145156 handleNextClick ( ) ;
@@ -148,36 +159,36 @@ const SignUp: React.FC = () => {
148159
149160 return (
150161 < OODDFrame >
151- < SignUpContainer >
162+ < SignUpLayout >
152163 < LogoWrapper >
153164 < LogoImg src = { OODDlogo } />
154165 </ LogoWrapper >
155- < IntroWrapper >
166+ < SignupStepContainer >
156167 < StyledText $textTheme = { { style : { mobile : 'title3-bold' , tablet : 'title2-bold' , desktop : 'title1-bold' } } } >
157168 { label }
158169 </ StyledText >
159- < NickNameContainer >
160- < NickName
170+ < InputContainer >
171+ < InputValue
161172 type = { type }
162173 value = { value }
163174 onChange = { onChange }
164175 placeholder = { placeholder }
165176 onKeyDown = { handleKeyDown }
166177 />
167178 { value === '' && (
168- < TapStyled
179+ < TapToEdit
169180 $textTheme = { {
170181 style : { mobile : 'body1-regular' , tablet : 'heading1-medium' , desktop : 'heading1-medium' } ,
171182 } }
172183 >
173184 탭하여 수정해 주세요!
174- </ TapStyled >
185+ </ TapToEdit >
175186 ) }
176- </ NickNameContainer >
177- </ IntroWrapper >
187+ </ InputContainer >
188+ </ SignupStepContainer >
178189 < BottomButton content = { currentStep < steps . length ? '다음' : '완료' } onClick = { handleNextClick } />
179190 { isModalOpen && < Modal content = { modalMessage } onClose = { handleModalClose } /> }
180- </ SignUpContainer >
191+ </ SignUpLayout >
181192 </ OODDFrame >
182193 ) ;
183194} ;
0 commit comments