@@ -4,51 +4,30 @@ import LoginDialog from './LoginDialog';
44
55export default function AccountMenu ( ) {
66 const [ loggedIn , setLoggedIn ] = useState ( false ) ;
7- const [ user , setUser ] = useState ( null ) ;
7+ const [ user , setUser ] = useState < any > ( { } ) ;
88 const [ avatar , setAvatar ] = useState ( "https://randomuser.me/api/portraits/men/75.jpg" ) ;
99 const [ name , setName ] = useState ( "" ) ;
1010 const [ username , setUsername ] = useState ( "" ) ;
1111
1212 const logOut = ( e : React . MouseEvent < HTMLButtonElement > ) => {
1313 e . preventDefault ( ) ;
1414 localStorage . removeItem ( 'jwt' ) ;
15+ localStorage . removeItem ( 'user' ) ;
1516 setLoggedIn ( false ) ;
1617 }
1718
18- const loadUser = async ( ) => {
19- console . log ( user ) ;
20- const jwt = localStorage . getItem ( 'jwt' ) ;
21- if ( ! jwt ) return ;
22-
23- const res = fetch ( `${ process . env . REACT_APP_BACKEND_API_URL } /api/v1/users/self` , {
24- headers : {
25- Authorization : `Bearer ${ jwt } ` ,
26- 'Content-Type' : 'application/json' ,
27- }
28- } )
29- . then ( res => res . json ( ) )
30- . catch ( err => console . error ( 'Failed to fetch user data:' , err ) ) ;
31-
32- return res ;
33- }
34-
35-
3619 useEffect ( ( ) => {
3720 // Check if the user is logged in
3821 const jwt = localStorage . getItem ( 'jwt' ) ;
3922 setLoggedIn ( ! ! jwt ) ;
4023
41- if ( jwt ) {
42- // Get user data
43- loadUser ( )
44- . then ( ( data ) => {
45- setUser ( data ) ;
46- localStorage . setItem ( 'user' , JSON . stringify ( data ) ) ;
47- setAvatar ( data . avatar ) ;
48- setName ( data . name ) ;
49- setUsername ( data . username ) ;
50- } )
51- . catch ( err => console . error ( 'Failed to fetch user data:' , err ) ) ;
24+ // Get user data
25+ const userData : string | null = localStorage . getItem ( 'user' ) ;
26+ if ( userData ) {
27+ setUser ( JSON . parse ( userData ) ) ;
28+ setAvatar ( user . avatar ) ;
29+ setName ( user . name ) ;
30+ setUsername ( user . username ) ;
5231 }
5332 } , [ ] ) ;
5433
@@ -89,7 +68,7 @@ export default function AccountMenu() {
8968 </ DropdownMenu . Item >
9069 < DropdownMenu . Separator />
9170 < DropdownMenu . Item className = 'hover:bg-primary-dark' >
92- < button onClick = { logOut } > Log out</ button >
71+ < button className = 'w-full text-left' onClick = { logOut } > Log out</ button >
9372 </ DropdownMenu . Item >
9473 </ DropdownMenu . Content >
9574 </ DropdownMenu . Root >
0 commit comments