1
1
import React , { useState } from "react" ;
2
2
import { useUserInfo } from "../utils/queries/base" ;
3
- import { UserInfo } from "../utils/types" ;
3
+ import { RawUserInfo , UserInfo } from "../utils/types" ;
4
4
import { useUserInfoUpdateMutation } from "../utils/queries/profiles" ;
5
+ import { DateTime } from "luxon" ;
5
6
6
7
import "../css/profile.scss" ;
7
8
8
9
export const UserProfile = ( ) : React . ReactElement => {
9
10
const { data : jsonUserInfo , isSuccess : userInfoLoaded } = useUserInfo ( ) ;
10
11
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
+ // }
26
28
27
29
return (
28
30
< 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 >
30
38
</ React . Fragment >
31
39
) ;
32
40
} ;
33
41
34
42
interface UserInfoProps {
35
- userInfo : UserInfo | null ;
43
+ userInfo : RawUserInfo ;
44
+ priorityEnrollment ?: string ;
36
45
}
37
46
38
- const DisplayUser = ( { userInfo } : UserInfoProps ) => {
47
+ const DisplayUser = ( { userInfo, priorityEnrollment } : UserInfoProps ) => {
39
48
/**
40
49
* Mutation to create a new section.
41
50
*/
42
- const createSectionMutation = useUserInfoUpdateMutation ( userInfo . id ) ;
51
+ const createSectionMutation = useUserInfoUpdateMutation ( userInfo ? .id ) ;
43
52
44
53
const [ editing , setEditing ] = useState ( false ) ;
45
54
/**
@@ -63,6 +72,17 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
63
72
* User Bio
64
73
*/
65
74
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
+ }
66
86
67
87
const handleEditing = ( ) => {
68
88
setEditing ( true ) ;
@@ -79,13 +99,17 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
79
99
const handleSave = ( event : React . MouseEvent < HTMLButtonElement > ) : void => {
80
100
event . preventDefault ( ) ;
81
101
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 ,
85
107
bio,
86
- userPronoun
108
+ priorityEnrollment : priority ,
109
+ pronouns : userPronoun ,
110
+ pronunciation
87
111
} ;
88
-
112
+ console . log ( data ) ;
89
113
createSectionMutation . mutate ( data , {
90
114
onSuccess : ( ) => {
91
115
setEditing ( false ) ;
@@ -113,6 +137,9 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
113
137
case "bio" :
114
138
setBio ( value ) ;
115
139
break ;
140
+ case "pronunciation" :
141
+ setPronunciation ( value ) ;
142
+ break ;
116
143
default :
117
144
console . error ( "Unknown input name: " + name ) ;
118
145
break ;
@@ -179,7 +206,16 @@ const DisplayUser = ({ userInfo }: UserInfoProps) => {
179
206
< label className = "formbold-form-label" > Pronouns </ label >
180
207
</ div >
181
208
</ 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 >
183
219
< div className = "formbold-textarea" >
184
220
< textarea
185
221
name = "bio"
0 commit comments