11import React , { useState } from "react" ;
22import { useUserInfo } from "../utils/queries/base" ;
3- import { UserInfo } from "../utils/types" ;
3+ import { RawUserInfo , UserInfo } from "../utils/types" ;
44import { useUserInfoUpdateMutation } from "../utils/queries/profiles" ;
5+ import { DateTime } from "luxon" ;
56
67import "../css/profile.scss" ;
78
89export const UserProfile = ( ) : React . ReactElement => {
910 const { data : jsonUserInfo , isSuccess : userInfoLoaded } = useUserInfo ( ) ;
1011
11- let userInfo : UserInfo | null ;
12- if ( userInfoLoaded ) {
13- let priorityEnrollment = undefined ;
14- if ( jsonUserInfo . priorityEnrollment ) {
15- priorityEnrollment = new Date ( Date . parse ( jsonUserInfo . priorityEnrollment ) ) ;
16- }
17- const convertedUserInfo : UserInfo = {
18- ...jsonUserInfo ,
19- priorityEnrollment
20- } ;
21- userInfo = convertedUserInfo ;
22- } else {
23- // not done loading yet
24- userInfo = null ;
25- }
12+ // let userInfo: UserInfo;
13+ // if (userInfoLoaded) {
14+ // let priorityEnrollment = undefined;
15+ // if (jsonUserInfo.priorityEnrollment) {
16+ // priorityEnrollment = DateTime.fromISO(jsonUserInfo.priorityEnrollment);
17+ // }
18+ // const convertedUserInfo: UserInfo = {
19+ // ...jsonUserInfo,
20+ // priorityEnrollment
21+ // };
22+ // userInfo = convertedUserInfo;
23+ // }
24+ // else {
25+ // // not done loading yet
26+ // userInfo = null;
27+ // }
2628
2729 return (
2830 < React . Fragment >
29- < div > { userInfoLoaded ? < DisplayUser userInfo = { userInfo } /> : < > </ > } </ div >
31+ < div >
32+ { userInfoLoaded ? (
33+ < DisplayUser userInfo = { jsonUserInfo } priorityEnrollment = { jsonUserInfo . priorityEnrollment } />
34+ ) : (
35+ < > </ >
36+ ) }
37+ </ div >
3038 </ React . Fragment >
3139 ) ;
3240} ;
3341
3442interface UserInfoProps {
35- userInfo : UserInfo | null ;
43+ userInfo : RawUserInfo ;
44+ priorityEnrollment ?: string ;
3645}
3746
38- const DisplayUser = ( { userInfo } : UserInfoProps ) => {
47+ const DisplayUser = ( { userInfo, priorityEnrollment } : UserInfoProps ) => {
3948 /**
4049 * Mutation to create a new section.
4150 */
42- const createSectionMutation = useUserInfoUpdateMutation ( userInfo . id ) ;
51+ const createSectionMutation = useUserInfoUpdateMutation ( userInfo ? .id ) ;
4352
4453 const [ editing , setEditing ] = useState ( false ) ;
4554 /**
@@ -63,6 +72,17 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
6372 * User Bio
6473 */
6574 const [ bio , setBio ] = useState < string > ( "" ) ;
75+ /**
76+ * Pronunciation
77+ */
78+ const [ pronunciation , setPronunciation ] = useState < string > ( "" ) ;
79+ /**
80+ * Pronunciation
81+ */
82+ let priority : DateTime | undefined ;
83+ if ( priorityEnrollment ) {
84+ priority = DateTime . fromISO ( priorityEnrollment ) ;
85+ }
6686
6787 const handleEditing = ( ) => {
6888 setEditing ( true ) ;
@@ -79,13 +99,17 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
7999 const handleSave = ( event : React . MouseEvent < HTMLButtonElement > ) : void => {
80100 event . preventDefault ( ) ;
81101 const data = {
82- userFirstName,
83- userLastName,
84- userEmail,
102+ id : userInfo . id ,
103+ firstName : userFirstName ,
104+ lastName : userLastName ,
105+ email : userEmail ,
106+ isPrivate : userInfo . isPrivate ,
85107 bio,
86- userPronoun
108+ priorityEnrollment : priority ,
109+ pronouns : userPronoun ,
110+ pronunciation
87111 } ;
88-
112+ console . log ( data ) ;
89113 createSectionMutation . mutate ( data , {
90114 onSuccess : ( ) => {
91115 setEditing ( false ) ;
@@ -113,6 +137,9 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
113137 case "bio" :
114138 setBio ( value ) ;
115139 break ;
140+ case "pronunciation" :
141+ setPronunciation ( value ) ;
142+ break ;
116143 default :
117144 console . error ( "Unknown input name: " + name ) ;
118145 break ;
@@ -179,7 +206,16 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
179206 < label className = "formbold-form-label" > Pronouns </ label >
180207 </ div >
181208 </ div >
182-
209+ < div className = "formbold-textarea" >
210+ < textarea
211+ name = "pronunciation"
212+ id = "pronunciation"
213+ placeholder = "How to pronounce your name"
214+ className = "formbold-form-input"
215+ disabled = { true }
216+ > </ textarea >
217+ < label className = "formbold-form-label" > Pronunciation </ label >
218+ </ div >
183219 < div className = "formbold-textarea" >
184220 < textarea
185221 name = "bio"
0 commit comments