@@ -19,8 +19,6 @@ export default function UserDetailsModal({ user, isOpen, onClose, preventClose }
1919
2020 if ( ! isOpen ) return null ;
2121
22- const member = user ?. member ?? user ?? { } ;
23-
2422 const rowStyle = 'border border-[#5b5b6699]' ;
2523 const cellStyle = 'p-3 font-bold text-gray-300' ;
2624 const valueStyle = 'p-3' ;
@@ -31,53 +29,44 @@ export default function UserDetailsModal({ user, isOpen, onClose, preventClose }
3129 < div className = 'max-w-[600px] w-full max-h-[90vh] mobile:max-h-[80vh] bg-[#27272A] rounded-lg shadow-md p-6 overflow-y-auto' >
3230 < div className = 'text-lg font-bold text-center text-white mb-4' > User Details</ div >
3331
34- { /* User Basic Info */ }
32+ { /* User Basic Info (신 응답 스키마에 맞춤) */ }
3533 < table className = 'w-full border-collapse border text-white mb-6' >
3634 < tbody >
3735 { [
38- [ '이름' , user . member . name ] ,
39- [ '학년' , user . member . grade ] ,
40- [ '학번' , user . member . studentId ] ,
41- [ '전화번호' , user . member . phoneNumber ] ,
42- [ '국적' , user . member . nationality === 'etc' ? user . member . nationalityContent : user . member . nationality ] ,
43- [ 'Email' , user . member . email ] ,
44- [ '성별' , user . member . gender ] ,
45- [ '생년월일' , user . member . birth ] ,
46- [ '학교' , user . member . school ] ,
47- [ '전공' , user . member . majors . main ] ,
48- [ '부전공' , user . member . majors . second . join ( ', ' ) || '없음' ] ,
49- [ '가입 경로' , user . member . route ] ,
50- [ '회비 송금 여부' , user . member . isPayed ? 'Yes' : 'No' ] ,
51- ] . map ( ( [ label , userValue ] , idx ) => (
52- < tr key = { idx } className = { rowStyle } >
53- < td className = { clsx ( cellStyle ) } > { label } </ td >
54- < td className = { clsx ( valueStyle ) } > { userValue } </ td >
55- </ tr >
56- ) ) }
36+ [ '이름' , user ?. name ] ,
37+ [ '전공' , user ?. major ] ,
38+ [ '학번' , user ?. studentId ] ,
39+ [ '회비 송금 여부' , typeof user ?. isPayed === 'boolean' ? ( user . isPayed ? 'Yes' : 'No' ) : undefined ] ,
40+ ]
41+ . filter ( ( [ , val ] ) => val !== undefined && val !== null && val !== '' )
42+ . map ( ( [ label , userValue ] , idx ) => (
43+ < tr key = { idx } className = { rowStyle } >
44+ < td className = { clsx ( cellStyle ) } > { label } </ td >
45+ < td className = { clsx ( valueStyle ) } > { userValue } </ td >
46+ </ tr >
47+ ) ) }
5748 </ tbody >
5849 </ table >
5950
6051 < div className = 'text-white space-y-7' >
61- { user . answers . map ( ( answer , idx ) => {
52+ { ( Array . isArray ( user ? .answers ?. answers ) ? user . answers . answers : [ ] ) . map ( ( answer , idx ) => {
6253 const questionMap = {
63- 1 : '지원 동기' ,
64- 2 : '진로 경험 & 이야기' ,
65- 3 : '관심 분야' ,
66- 4 : 'GDG 기수' ,
67- 5 : '경로' ,
68- 6 : '얻어가고 싶은 거' ,
69- 7 : '기대하는 활동' ,
70- 8 : '피드백' ,
54+ APPLY_MOTIVATION : '지원 동기' ,
55+ LIFE_STORY : '진로 경험 & 이야기' ,
56+ INTERESTS : '관심 분야' ,
57+ GDG_PERIOD : 'GDG 기수' ,
58+ ROUTE_TO_KNOW : '경로' ,
59+ WANT_TO_GET : '얻어가고 싶은 거' ,
60+ EXPECTED_ACTIVITY : '기대하는 활동' ,
61+ FEEDBACK : '피드백' ,
7162 } ;
7263
73- const question = questionMap [ answer . questionId ] ;
74- //배열일시 전환
75- const response = Array . isArray ( answer . responseValue )
76- ? answer . responseValue . join ( ', ' )
77- : answer . responseValue ;
64+ const question = questionMap [ answer ?. inputType ] ?? answer ?. inputType ?? '질문' ;
65+ const value = answer ?. responseValue ;
66+ const response = Array . isArray ( value ) ? value . join ( ', ' ) : value ;
7867
7968 return (
80- < div key = { idx } >
69+ < div key = { answer ?. id ?? idx } >
8170 < hr className = 'border-[#5b5b6699]' />
8271 < div className = { clsx ( infoTextStyle ) } > { question } </ div >
8372 < div className = 'text-sm' > { response || '없음' } </ div >
0 commit comments