1
+ import { DateTime } from "luxon" ;
1
2
import React , { useState } from "react" ;
2
3
import { useUserInfo } from "../utils/queries/base" ;
3
- import { RawUserInfo , UserInfo } from "../utils/types" ;
4
4
import { useUserInfoUpdateMutation } from "../utils/queries/profiles" ;
5
- import { DateTime } from "luxon " ;
5
+ import { RawUserInfo } from "../utils/types " ;
6
6
7
7
import "../css/profile.scss" ;
8
8
9
9
export const UserProfile = ( ) : React . ReactElement => {
10
10
const { data : jsonUserInfo , isSuccess : userInfoLoaded } = useUserInfo ( ) ;
11
11
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
- // }
28
-
29
12
return (
30
13
< React . Fragment >
31
14
< div >
@@ -54,31 +37,32 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
54
37
/**
55
38
* User First Name
56
39
*/
57
- const [ userFirstName , setUserFirstName ] = useState < string > ( "" ) ;
40
+ const userFirstName = userInfo . firstName ;
58
41
59
42
/**
60
43
* User Last Name
61
44
*/
62
- const [ userLastName , setUserLastName ] = useState < string > ( "" ) ;
45
+
46
+ const userLastName = userInfo . lastName ;
63
47
/**
64
48
* User email
65
49
*/
66
- const [ userEmail , setUserEmail ] = useState < string > ( "" ) ;
50
+ const userEmail = userInfo . email ;
67
51
/**
68
52
* User Pronoun
69
53
*/
70
- const [ userPronoun , setUserPronoun ] = useState < string > ( "" ) ;
54
+ const [ userPronoun , setUserPronoun ] = useState < string > ( userInfo . pronouns ) ;
71
55
/**
72
56
* User Bio
73
57
*/
74
- const [ bio , setBio ] = useState < string > ( "" ) ;
75
- /**
76
- * Pronunciation
77
- */
78
- const [ pronunciation , setPronunciation ] = useState < string > ( "" ) ;
58
+ const [ userBio , setUserBio ] = useState < string > ( userInfo . bio ) ;
79
59
/**
80
60
* Pronunciation
81
61
*/
62
+ const [ userPreferredName , setUserPreferredName ] = useState < string > ( userInfo . preferredName ) ;
63
+
64
+ const CHARACTER_LIMIT = 500 ;
65
+
82
66
let priority : DateTime | undefined ;
83
67
if ( priorityEnrollment ) {
84
68
priority = DateTime . fromISO ( priorityEnrollment ) ;
@@ -104,10 +88,10 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
104
88
lastName : userLastName ,
105
89
email : userEmail ,
106
90
isPrivate : userInfo . isPrivate ,
107
- bio,
91
+ bio : userBio ,
108
92
priorityEnrollment : priority ,
109
93
pronouns : userPronoun ,
110
- pronunciation
94
+ preferredName : userPreferredName
111
95
} ;
112
96
console . log ( data ) ;
113
97
createSectionMutation . mutate ( data , {
@@ -122,30 +106,25 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
122
106
*/
123
107
const handleChange = ( name : string , value : string ) : void => {
124
108
switch ( name ) {
125
- case "firstName" :
126
- setUserFirstName ( value ) ;
127
- break ;
128
- case "lastName" :
129
- setUserLastName ( value ) ;
130
- break ;
131
- case "email" :
132
- setUserEmail ( value ) ;
133
- break ;
134
109
case "pronouns" :
135
110
setUserPronoun ( value ) ;
136
111
break ;
137
112
case "bio" :
138
- setBio ( value ) ;
113
+ setUserBio ( value ) ;
139
114
break ;
140
- case "pronunciation " :
141
- setPronunciation ( value ) ;
115
+ case "preferredName " :
116
+ setUserPreferredName ( value ) ;
142
117
break ;
143
118
default :
144
119
console . error ( "Unknown input name: " + name ) ;
145
120
break ;
146
121
}
147
122
} ;
148
123
124
+ // const handleBio = (value: string): void => {
125
+ // setUserBio()
126
+ // }
127
+
149
128
return (
150
129
< div >
151
130
{ userInfo !== null ? (
@@ -160,8 +139,7 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
160
139
id = "firstname"
161
140
defaultValue = { userInfo . firstName }
162
141
className = "formbold-form-input"
163
- disabled = { ! editing }
164
- onChange = { e => handleChange ( "firstName" , e . target . value ) }
142
+ disabled = { true }
165
143
/>
166
144
< label className = "formbold-form-label" > First name </ label >
167
145
</ div >
@@ -172,13 +150,24 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
172
150
id = "lastname"
173
151
defaultValue = { userInfo . lastName }
174
152
className = "formbold-form-input"
175
- disabled = { ! editing }
176
- onChange = { e => handleChange ( "lastName" , e . target . value ) }
153
+ disabled = { true }
177
154
/>
178
155
< label className = "formbold-form-label" > Last name </ label >
179
156
</ div >
180
157
</ div >
181
-
158
+ < div className = "formbold-textarea" >
159
+ < textarea
160
+ name = "bio"
161
+ id = "bio"
162
+ placeholder = "Write your bio..."
163
+ className = "formbold-form-input-bio"
164
+ disabled = { ! editing }
165
+ defaultValue = { userInfo . bio }
166
+ maxLength = { 500 }
167
+ onChange = { e => handleChange ( "bio" , e . target . value ) }
168
+ > </ textarea >
169
+ < label className = "formbold-form-label" > Bio { `[${ userBio . length } / ${ CHARACTER_LIMIT } ]` } </ label >
170
+ </ div >
182
171
< div className = "formbold-input-flex" >
183
172
< div >
184
173
< input
@@ -188,7 +177,6 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
188
177
defaultValue = { userInfo . email }
189
178
className = "formbold-form-input"
190
179
disabled = { true }
191
- onChange = { e => handleChange ( "email" , e . target . value ) }
192
180
/>
193
181
< label className = "formbold-form-label" > Email </ label >
194
182
</ div >
@@ -201,32 +189,24 @@ const DisplayUser = ({ userInfo, priorityEnrollment }: UserInfoProps) => {
201
189
className = "formbold-form-input"
202
190
defaultValue = { userInfo . pronouns }
203
191
disabled = { ! editing }
192
+ maxLength = { 20 }
204
193
onChange = { e => handleChange ( "pronouns" , e . target . value ) }
205
194
/>
206
195
< label className = "formbold-form-label" > Pronouns </ label >
207
196
</ div >
208
197
</ div >
209
198
< div className = "formbold-textarea" >
210
199
< 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 >
219
- < div className = "formbold-textarea" >
220
- < textarea
221
- name = "bio"
222
- id = "bio"
223
- placeholder = "Write your bio..."
200
+ name = "preferredName"
201
+ id = "preferredName"
202
+ placeholder = ""
224
203
className = "formbold-form-input"
225
204
disabled = { ! editing }
226
- defaultValue = { userInfo . bio }
227
- onChange = { e => handleChange ( "bio" , e . target . value ) }
205
+ defaultValue = { userInfo . preferredName }
206
+ maxLength = { 50 }
207
+ onChange = { e => handleChange ( "preferredName" , e . target . value ) }
228
208
> </ textarea >
229
- < label className = "formbold-form-label" > Bio </ label >
209
+ < label className = "formbold-form-label" > Preferred Name </ label >
230
210
</ div >
231
211
</ form >
232
212
< div className = "button-wrapper" >
0 commit comments