22
33import { useAuth } from "@/hooks/useAuth" ;
44import { type SignupSchema , signupSchema } from "@/schemas/authSchema" ;
5- import { ROLES } from "@/schemas/commonSchema " ;
5+ import { userRoles } from "@/constants/userRoles " ;
66import { zodResolver } from "@hookform/resolvers/zod" ;
77import Link from "next/link" ;
8- import { useEffect } from "react" ;
98import { FieldErrors , useForm } from "react-hook-form" ;
9+ import { useEffect } from "react" ;
1010
1111export default function SignupPage ( ) {
1212 const { signup, isSignupPending } = useAuth ( ) ;
1313 const {
1414 register,
1515 handleSubmit,
1616 watch,
17- setValue,
1817 formState : { errors } ,
18+ setValue,
1919 } = useForm < SignupSchema > ( {
2020 resolver : zodResolver ( signupSchema ) ,
2121 defaultValues : {
22- role : ROLES . APPLICANT ,
22+ role : userRoles . APPLICANT ,
2323 phoneNumber : "" ,
2424 storeName : "" ,
2525 storePhoneNumber : "" ,
@@ -31,11 +31,25 @@ export default function SignupPage() {
3131 const selectedRole = watch ( "role" ) ;
3232 const formValues = watch ( ) ;
3333
34+ useEffect ( ( ) => {
35+ if ( selectedRole === userRoles . APPLICANT ) {
36+ setValue ( "storeName" , "" , { shouldValidate : false } ) ;
37+ setValue ( "storePhoneNumber" , "" , {
38+ shouldValidate : false ,
39+ shouldDirty : false ,
40+ shouldTouch : false ,
41+ } ) ;
42+ setValue ( "location" , "" , { shouldValidate : false } ) ;
43+ } else {
44+ setValue ( "phoneNumber" , "" , { shouldValidate : false } ) ;
45+ }
46+ } , [ selectedRole , setValue ] ) ;
47+
3448 const isFormComplete = ( ) => {
3549 const baseFields = [ "email" , "password" , "confirmPassword" , "name" , "nickname" ] ;
3650 const baseFieldsComplete = baseFields . every ( ( field ) => formValues [ field as keyof SignupSchema ] ?. trim ( ) !== "" ) ;
3751
38- if ( selectedRole === ROLES . OWNER ) {
52+ if ( selectedRole === userRoles . OWNER ) {
3953 return (
4054 baseFieldsComplete &&
4155 formValues . storeName ?. trim ( ) !== "" &&
@@ -47,26 +61,8 @@ export default function SignupPage() {
4761 return baseFieldsComplete && formValues . phoneNumber ?. trim ( ) !== "" ;
4862 } ;
4963
50- useEffect ( ( ) => {
51- if ( selectedRole === ROLES . APPLICANT ) {
52- setValue ( "storeName" , "" ) ;
53- setValue ( "storePhoneNumber" , "" ) ;
54- setValue ( "location" , "" ) ;
55- } else if ( selectedRole === ROLES . OWNER ) {
56- setValue ( "phoneNumber" , "" ) ;
57- }
58- } , [ selectedRole , setValue ] ) ;
59-
6064 const onSubmit = ( data : SignupSchema ) => {
61- if ( data . role === ROLES . OWNER ) {
62- // eslint-disable-next-line @typescript-eslint/no-unused-vars
63- const { phoneNumber, ...ownerData } = data ;
64- signup ( ownerData as SignupSchema ) ;
65- } else {
66- // eslint-disable-next-line @typescript-eslint/no-unused-vars
67- const { storeName, storePhoneNumber, location, ...applicantData } = data ;
68- signup ( applicantData as SignupSchema ) ;
69- }
65+ signup ( data ) ;
7066 } ;
7167
7268 const onError = ( errors : FieldErrors < SignupSchema > ) => {
@@ -134,16 +130,16 @@ export default function SignupPage() {
134130 </ div >
135131 < div className = "flex gap-4" >
136132 < label className = "flex items-center" >
137- < input { ...register ( "role" ) } type = "radio" value = { ROLES . APPLICANT } className = "mr-2" defaultChecked />
133+ < input { ...register ( "role" ) } type = "radio" value = { userRoles . APPLICANT } className = "mr-2" defaultChecked />
138134 ์ง์์
139135 </ label >
140136 < label className = "flex items-center" >
141- < input { ...register ( "role" ) } type = "radio" value = { ROLES . OWNER } className = "mr-2" />
137+ < input { ...register ( "role" ) } type = "radio" value = { userRoles . OWNER } className = "mr-2" />
142138 ์ฌ์ฅ๋
143139 </ label >
144140 </ div >
145141 { errors . role && < p className = "mt-1 text-sm text-red-600" > { errors . role . message } </ p > }
146- { selectedRole === ROLES . APPLICANT && (
142+ { selectedRole === userRoles . APPLICANT && (
147143 < div >
148144 < input
149145 { ...register ( "phoneNumber" ) }
@@ -154,7 +150,7 @@ export default function SignupPage() {
154150 { errors . phoneNumber && < p className = "mt-1 text-sm text-red-600" > { errors . phoneNumber . message } </ p > }
155151 </ div >
156152 ) }
157- { selectedRole === ROLES . OWNER && (
153+ { selectedRole === userRoles . OWNER && (
158154 < >
159155 < div >
160156 < input
0 commit comments