11import type React from 'react'
22import { createContext , useContext , useEffect , useState } from 'react'
3+ import { UsersService } from '@/client'
34
45const GUEST_MODE_KEY = 'guest_mode'
56const ACCESS_TOKEN_KEY = 'access_token'
@@ -8,26 +9,47 @@ interface AuthContextType {
89 isGuest : boolean
910 isLoggedIn : boolean
1011 setGuestMode : ( value : boolean ) => void
11- logout : ( ) => void
12+ logout : ( ) => Promise < void >
1213}
1314
1415const AuthContext = createContext < AuthContextType | undefined > ( undefined )
1516
1617function AuthProvider ( { children } : { children : React . ReactNode } ) {
1718 const [ isGuest , setIsGuest ] = useState ( ( ) => localStorage . getItem ( GUEST_MODE_KEY ) === 'true' )
18- const [ isLoggedIn , setIsLoggedIn ] = useState (
19- ( ) =>
20- Boolean ( localStorage . getItem ( ACCESS_TOKEN_KEY ) ) ||
21- localStorage . getItem ( GUEST_MODE_KEY ) === 'true' ,
19+ const [ isLoggedIn , setIsLoggedIn ] = useState ( ( ) =>
20+ Boolean ( localStorage . getItem ( ACCESS_TOKEN_KEY ) ) || localStorage . getItem ( GUEST_MODE_KEY ) === 'true'
2221 )
2322
2423 useEffect ( ( ) => {
24+ console . log ( "isLoggedIn" , isLoggedIn )
25+
26+ const checkUser = async ( ) => {
27+ if ( localStorage . getItem ( GUEST_MODE_KEY ) === 'true' ) {
28+ setIsLoggedIn ( true )
29+ return
30+ }
31+
32+ try {
33+ const user = await UsersService . readUserMe ( )
34+ if ( user ) {
35+ setIsLoggedIn ( true )
36+ }
37+ } catch ( error ) {
38+ console . error ( 'Error fetching user:' , error )
39+ }
40+ }
41+ checkUser ( )
42+ } , [ ] )
43+
44+ useEffect ( ( ) => {
45+ console . log ( 'AuthProvider mounted' )
2546 const handleStorage = ( e : StorageEvent ) => {
47+ console . log ( 'Storage event:' , e . key )
2648 if ( e . key === GUEST_MODE_KEY || e . key === ACCESS_TOKEN_KEY ) {
2749 setIsGuest ( localStorage . getItem ( GUEST_MODE_KEY ) === 'true' )
2850 setIsLoggedIn (
2951 Boolean ( localStorage . getItem ( ACCESS_TOKEN_KEY ) ) ||
30- localStorage . getItem ( GUEST_MODE_KEY ) === 'true' ,
52+ localStorage . getItem ( GUEST_MODE_KEY ) === 'true'
3153 )
3254 }
3355 }
@@ -45,7 +67,15 @@ function AuthProvider({ children }: { children: React.ReactNode }) {
4567 setIsLoggedIn ( value || Boolean ( localStorage . getItem ( ACCESS_TOKEN_KEY ) ) )
4668 }
4769
48- const logout = ( ) => {
70+ const logout = async ( ) => {
71+ try {
72+ await fetch ( 'http://localhost:8000/api/v1/auth0/logout' , {
73+ method : 'GET' ,
74+ credentials : 'include' ,
75+ } )
76+ } catch ( e ) {
77+ console . error ( 'Logout request failed' , e )
78+ }
4979 localStorage . removeItem ( ACCESS_TOKEN_KEY )
5080 setGuestMode ( false )
5181 setIsLoggedIn ( false )
@@ -64,4 +94,4 @@ function useAuthContext() {
6494 return ctx
6595}
6696
67- export { AuthProvider , useAuthContext }
97+ export { AuthProvider , useAuthContext }
0 commit comments