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
}