File size: 639 Bytes
45a105b de6cac5 45a105b de6cac5 45a105b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import { useEffect, useState } from 'react'
import { getActiveUser, getToken, isAuthenticated, onSessionChange, type ActiveUser } from '../auth/session'
interface SessionState {
authed: boolean
token: string | null
activeUser: ActiveUser | null
}
export function useSession(): SessionState {
const [state, setState] = useState<SessionState>(() => ({
authed: isAuthenticated(),
token: getToken(),
activeUser: getActiveUser(),
}))
useEffect(
() =>
onSessionChange(() =>
setState({ authed: isAuthenticated(), token: getToken(), activeUser: getActiveUser() }),
),
[],
)
return state
}
|