@@ -5,129 +5,134 @@ import {urlConfig} from '../../config';
55import { useAppContext } from '../../context/AuthContext' ;
66
77const Profile = ( ) => {
8- const [ userDetails , setUserDetails ] = useState ( { } ) ;
9- const [ updatedDetails , setUpdatedDetails ] = useState ( { } ) ;
10- const { setUserName} = useAppContext ( ) ;
11- const [ changed , setChanged ] = useState ( "" ) ;
8+ const [ userDetails , setUserDetails ] = useState ( { } ) ;
9+ const [ updatedDetails , setUpdatedDetails ] = useState ( { } ) ;
10+ const { setUserName} = useAppContext ( ) ;
11+ const [ changed , setChanged ] = useState ( "" ) ;
1212
13- const [ editMode , setEditMode ] = useState ( false ) ;
14- const navigate = useNavigate ( ) ;
15- useEffect ( ( ) => {
16- const authtoken = sessionStorage . getItem ( "auth-token" ) ;
17- if ( ! authtoken ) {
18- navigate ( "/app/login" ) ;
19- } else {
20- fetchUserProfile ( ) ;
21- }
22- } , [ navigate ] ) ;
13+ const [ editMode , setEditMode ] = useState ( false ) ;
14+ const navigate = useNavigate ( ) ;
15+ useEffect ( ( ) => {
16+ const authtoken = sessionStorage . getItem ( "auth-token" ) ;
17+ if ( ! authtoken ) {
18+ navigate ( "/app/login" ) ;
19+ } else {
20+ fetchUserProfile ( ) ;
21+ }
22+ } , [ navigate ] ) ;
2323
24- const fetchUserProfile = async ( ) => {
25- try {
26- const authtoken = sessionStorage . getItem ( "auth-token" ) ;
27- const email = sessionStorage . getItem ( "email" ) ;
28- const name = sessionStorage . getItem ( 'name' ) ;
29- if ( name || authtoken ) {
24+ const fetchUserProfile = async ( ) => {
25+ try {
26+ const authtoken = sessionStorage . getItem ( "auth-token" ) ;
27+ const email = sessionStorage . getItem ( "email" ) ;
28+ const name = sessionStorage . getItem ( 'name' ) ;
29+ if ( name || authtoken ) {
3030 const storedUserDetails = {
31- name : name ,
32- email :email
31+ name : name ,
32+ email :email
3333 } ;
3434
3535 setUserDetails ( storedUserDetails ) ;
3636 setUpdatedDetails ( storedUserDetails ) ;
37- }
38- } catch ( error ) {
39- console . error ( error ) ;
40- // Handle error case
41- }
42- } ;
37+ }
38+ } catch ( error ) {
39+ console . error ( error ) ;
40+ // Handle error case
41+ }
42+ } ;
4343
44- const handleEdit = ( ) => {
45- setEditMode ( true ) ;
46- } ;
44+ const handleEdit = ( ) => {
45+ setEditMode ( true ) ;
46+ } ;
4747
48- const handleInputChange = ( e ) => {
49- setUpdatedDetails ( {
50- ...updatedDetails ,
51- [ e . target . name ] : e . target . value ,
52- } ) ;
53- } ;
54- const handleSubmit = async ( e ) => {
55- e . preventDefault ( ) ;
48+ const handleInputChange = ( e ) => {
49+ setUpdatedDetails ( {
50+ ...updatedDetails ,
51+ [ e . target . name ] : e . target . value ,
52+ } ) ;
53+ } ;
54+
55+ const handleSubmit = async ( e ) => {
56+ e . preventDefault ( ) ;
5657
57- try {
58+ try {
5859 const authtoken = sessionStorage . getItem ( "auth-token" ) ;
5960 const email = sessionStorage . getItem ( "email" ) ;
6061
6162 if ( ! authtoken || ! email ) {
62- navigate ( "/app/login" ) ;
63- return ;
63+ navigate ( "/app/login" ) ;
64+ return ;
6465 }
6566
6667 const payload = { ...updatedDetails } ;
6768 const response = await fetch ( `${ urlConfig . backendUrl } /api/auth/update` , {
68- //Step 1: Task 1
69- //Step 1: Task 2
70- //Step 1: Task 3
69+ method : "PUT" , //Step 1: Task 1
70+ headers : { //Step 1: Task 2
71+ "Authorization" : `Bearer ${ authtoken } ` ,
72+ "Content-Type" : "application/json" ,
73+ "Email" : email ,
74+ } ,
75+ body : JSON . stringify ( payload ) , //Step 1: Task 3
7176 } ) ;
7277
7378 if ( response . ok ) {
74- // Update the user details in session storage
75- //Step 1: Task 4
76- //Step 1: Task 5
77- setUserDetails ( updatedDetails ) ;
78- setEditMode ( false ) ;
79- // Display success message to the user
80- setChanged ( "Name Changed Successfully!" ) ;
81- setTimeout ( ( ) => {
79+ // Update the user details in session storage
80+ setUserName ( updatedDetails . name ) ; //Step 1: Task 4
81+ sessionStorage . setItem ( "name" , updatedDetails . name ) ; //Step 1: Task 5
82+ setUserDetails ( updatedDetails ) ;
83+ setEditMode ( false ) ;
84+ // Display success message to the user
85+ setChanged ( "Name Changed Successfully!" ) ;
86+ setTimeout ( ( ) => {
8287 setChanged ( "" ) ;
8388 navigate ( "/" ) ;
84- } , 1000 ) ;
89+ } , 1000 ) ;
8590
8691 } else {
87- // Handle error case
88- throw new Error ( "Failed to update profile" ) ;
92+ // Handle error case
93+ throw new Error ( "Failed to update profile" ) ;
8994 }
90- } catch ( error ) {
91- console . error ( error ) ;
95+ } catch ( error ) {
96+ console . error ( error ) ;
9297 // Handle error case
93- }
98+ }
9499} ;
95100
96- return (
97- < div className = "profile-container" >
98- { editMode ? (
99- < form onSubmit = { handleSubmit } >
100- < label >
101- Email
102- < input
103- type = "email"
104- name = "email"
105- value = { userDetails . email }
106- disabled // Disable the email field
107- />
108- </ label >
109- < label >
110- Name
111- < input
112- type = "text"
113- name = "name"
114- value = { updatedDetails . name }
115- onChange = { handleInputChange }
116- />
117- </ label >
101+ return (
102+ < div className = "profile-container" >
103+ { editMode ? (
104+ < form onSubmit = { handleSubmit } >
105+ < label >
106+ Email
107+ < input
108+ type = "email"
109+ name = "email"
110+ value = { userDetails . email }
111+ disabled // Disable the email field
112+ />
113+ </ label >
114+ < label >
115+ Name
116+ < input
117+ type = "text"
118+ name = "name"
119+ value = { updatedDetails . name }
120+ onChange = { handleInputChange }
121+ />
122+ </ label >
118123
119- < button type = "submit" > Save</ button >
120- </ form >
121- ) : (
122- < div className = "profile-details" >
123- < h1 > Hi, { userDetails . name } </ h1 >
124- < p > < b > Email:</ b > { userDetails . email } </ p >
125- < button onClick = { handleEdit } > Edit</ button >
126- < span style = { { color :'green' , height :'.5cm' , display :'block' , fontStyle :'italic' , fontSize :'12px' } } > { changed } </ span >
127- </ div >
128- ) }
129- </ div >
130- ) ;
124+ < button type = "submit" > Save</ button >
125+ </ form >
126+ ) : (
127+ < div className = "profile-details" >
128+ < h1 > Hi, { userDetails . name } </ h1 >
129+ < p > < b > Email:</ b > { userDetails . email } </ p >
130+ < button onClick = { handleEdit } > Edit</ button >
131+ < span style = { { color :'green' , height :'.5cm' , display :'block' , fontStyle :'italic' , fontSize :'12px' } } > { changed } </ span >
132+ </ div >
133+ ) }
134+ </ div >
135+ ) ;
131136} ;
132137
133- export default Profile ;
138+ export default Profile ;
0 commit comments