@@ -27,6 +27,9 @@ function UserProfile() {
27
27
const [ percentage , setpercentage ] = useState ( 0 ) ;
28
28
const [ isDisableDocId , setIsDisableDocId ] = useState ( false ) ;
29
29
const [ isSubscribe , setIsSubscribe ] = useState ( false ) ;
30
+ const [ publicUserName , setPublicUserName ] = useState (
31
+ ( extendUser && extendUser ?. [ 0 ] ?. UserName ) || ""
32
+ ) ;
30
33
const [ company , setCompany ] = useState (
31
34
extendUser && extendUser ?. [ 0 ] ?. Company
32
35
) ;
@@ -37,6 +40,7 @@ function UserProfile() {
37
40
const [ otp , setOtp ] = useState ( "" ) ;
38
41
const [ otpLoader , setOtpLoader ] = useState ( false ) ;
39
42
const [ isEmailVerified , setIsEmailVerified ] = useState ( false ) ;
43
+ const [ userNameError , setUserNameError ] = useState ( "" ) ;
40
44
useEffect ( ( ) => {
41
45
getUserDetail ( ) ;
42
46
} , [ ] ) ;
@@ -74,46 +78,68 @@ function UserProfile() {
74
78
}
75
79
}
76
80
} ;
81
+
82
+ const handleCheckPublicUserName = async ( ) => {
83
+ try {
84
+ const res = await Parse . Cloud . run ( "getPublicUserName" , {
85
+ userName : publicUserName
86
+ } ) ;
87
+ if ( res ) {
88
+ setIsLoader ( false ) ;
89
+ setUserNameError ( "user name already exist" ) ;
90
+ setTimeout ( ( ) => {
91
+ setUserNameError ( "" ) ;
92
+ } , 3000 ) ;
93
+ return res ;
94
+ }
95
+ } catch ( e ) {
96
+ console . log ( "extend error" ) ;
97
+ }
98
+ } ;
77
99
const handleSubmit = async ( e ) => {
78
100
e . preventDefault ( ) ;
79
101
setIsLoader ( true ) ;
80
102
let phn = Phone ;
81
103
82
- try {
83
- const tour = Parse . Object . extend ( "_User" ) ;
84
- const query = new Parse . Query ( tour ) ;
104
+ const res = await handleCheckPublicUserName ( ) ;
105
+ if ( ! res ) {
106
+ try {
107
+ const tour = Parse . Object . extend ( "_User" ) ;
108
+ const query = new Parse . Query ( tour ) ;
85
109
86
- await query . get ( UserProfile . objectId ) . then ( ( object ) => {
87
- object . set ( "name" , name ) ;
88
- object . set ( "ProfilePic" , Image ) ;
89
- object . set ( "phone" , phn ) ;
110
+ await query . get ( UserProfile . objectId ) . then ( ( object ) => {
111
+ object . set ( "name" , name ) ;
112
+ object . set ( "ProfilePic" , Image ) ;
113
+ object . set ( "phone" , phn ) ;
90
114
91
- object . save ( ) . then (
92
- async ( response ) => {
93
- if ( response ) {
94
- let res = response . toJSON ( ) ;
95
- let rr = JSON . stringify ( res ) ;
96
- localStorage . setItem ( "UserInformation" , rr ) ;
97
- SetName ( res . name ) ;
98
- SetPhone ( res . phone ) ;
99
- setImage ( res . ProfilePic ) ;
100
- localStorage . setItem ( "username" , res . name ) ;
101
- localStorage . setItem ( "profileImg" , res . ProfilePic ) ;
102
- await updateExtUser ( { Name : res . name , Phone : res . phone } ) ;
103
- alert ( "Profile updated successfully." ) ;
104
- setEditMode ( false ) ;
105
- navigate ( "/dashboard/35KBoSgoAK" ) ;
115
+ object . save ( ) . then (
116
+ async ( response ) => {
117
+ if ( response ) {
118
+ let res = response . toJSON ( ) ;
119
+ let rr = JSON . stringify ( res ) ;
120
+ localStorage . setItem ( "UserInformation" , rr ) ;
121
+ SetName ( res . name ) ;
122
+ SetPhone ( res . phone ) ;
123
+ setImage ( res . ProfilePic ) ;
124
+ localStorage . setItem ( "username" , res . name ) ;
125
+ localStorage . setItem ( "profileImg" , res . ProfilePic ) ;
126
+ await updateExtUser ( { Name : res . name , Phone : res . phone } ) ;
127
+ alert ( "Profile updated successfully." ) ;
128
+ setEditMode ( false ) ;
129
+ setIsLoader ( false ) ;
130
+ // navigate("/dashboard/35KBoSgoAK");
131
+ }
132
+ } ,
133
+ ( error ) => {
134
+ alert ( "Something went wrong." ) ;
135
+ console . error ( "Error while updating tour" , error ) ;
136
+ setIsLoader ( false ) ;
106
137
}
107
- } ,
108
- ( error ) => {
109
- alert ( "Something went wrong." ) ;
110
- console . error ( "Error while updating tour" , error ) ;
111
- setIsLoader ( false ) ;
112
- }
113
- ) ;
114
- } ) ;
115
- } catch ( error ) {
116
- console . log ( "err" , error ) ;
138
+ ) ;
139
+ } ) ;
140
+ } catch ( error ) {
141
+ console . log ( "err" , error ) ;
142
+ }
117
143
}
118
144
} ;
119
145
@@ -128,7 +154,8 @@ function UserProfile() {
128
154
Name : obj . Name ,
129
155
HeaderDocId : isDisableDocId ,
130
156
JobTitle : jobTitle ,
131
- Company : company
157
+ Company : company ,
158
+ UserName : publicUserName
132
159
} ;
133
160
await axios . put (
134
161
parseBaseUrl + "classes/" + extClass + "/" + ExtUserId ,
@@ -147,9 +174,7 @@ function UserProfile() {
147
174
148
175
const json = JSON . parse ( JSON . stringify ( [ res ] ) ) ;
149
176
const extRes = JSON . stringify ( json ) ;
150
-
151
177
localStorage . setItem ( "Extand_Class" , extRes ) ;
152
- // console.log("updateRes ", updateRes);
153
178
} ;
154
179
// file upload function
155
180
const fileUpload = async ( file ) => {
@@ -241,6 +266,9 @@ function UserProfile() {
241
266
setOtpLoader ( false ) ;
242
267
alert ( "OTP sent on you email" ) ;
243
268
} ;
269
+ const handlePublicUrl = ( e ) => {
270
+ setPublicUserName ( e . target . value ) ;
271
+ } ;
244
272
return (
245
273
< React . Fragment >
246
274
< Title title = { "Profile" } />
@@ -262,7 +290,15 @@ function UserProfile() {
262
290
> </ div >
263
291
</ div >
264
292
) : (
265
- < div className = "flex justify-center items-center w-full" >
293
+ < div className = "flex justify-center items-center w-full relative" >
294
+ { /* <Alert type={alertMsg.type}>{alertMsg.message}</Alert> */ }
295
+ { userNameError && (
296
+ < div
297
+ className = { `z-[1000] fixed top-20 transform border-[1px] text-sm border-[#f0a8a8] bg-[#f4bebe] text-[#c42121] rounded py-[.75rem] px-[1.25rem]` }
298
+ >
299
+ { userNameError }
300
+ </ div >
301
+ ) }
266
302
< div className = "bg-white flex flex-col justify-center shadow rounded w-[450px]" >
267
303
< div className = "flex flex-col justify-center items-center my-4" >
268
304
< div className = "w-[200px] h-[200px] overflow-hidden rounded-full" >
@@ -390,6 +426,21 @@ function UserProfile() {
390
426
) }
391
427
</ span >
392
428
</ li >
429
+ < li className = "flex justify-between items-center border-t-[1px] border-gray-300 py-2 break-all" >
430
+ < span className = "font-semibold" > Public profile:</ span >
431
+ < div className = "flex items-center" >
432
+ < span > opensign.me/</ span >
433
+
434
+ < input
435
+ onChange = { handlePublicUrl }
436
+ value = { publicUserName }
437
+ disabled = { ! editmode }
438
+ placeholder = "enter user name"
439
+ className = "border-[1px] border-gray-200 rounded-[3px]"
440
+ />
441
+ </ div >
442
+ </ li >
443
+
393
444
< li className = "border-y-[1px] border-gray-300 break-all" >
394
445
< div className = "flex justify-between items-center py-2" >
395
446
< span
0 commit comments