import { createContext, use, type PropsWithChildren } from 'react'
import { useStorageState } from './useStorageState'
const AuthContext = createContext<{
login: () => void
logout: () => void
session?: string | null
isLoading: boolean
}>({
login: () => null,
logout: () => null,
session: null,
isLoading: false
})
// This hook can be used to access the user info.
export function useSession() {
const value = use(AuthContext)
if (!value) {
throw new Error('useSession must be wrapped in a ')
}
return value
}
export function SessionProvider({ children }: PropsWithChildren) {
const [[isLoading, session], setSession] = useStorageState('session')
return (
{
// Perform sign-in logic here
setSession('admin')
},
logout: () => {
setSession(null)
},
session,
isLoading
}}
>
{children}
)
}