You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
rust-course/src/hooks/use-session.ts

31 lines
657 B

import { useEffect, useState } from "react"
import { Session } from "src/types/session"
import events from "utils/events"
import storage from "utils/localStorage"
function useSession(): Session{
const [session, setSession] = useState(null)
useEffect(() => {
const sess = storage.get('session')
if (sess) {
setSession(sess)
}
events.on('set-session',storeSession)
return() => {
events.off('set-session',storeSession)
}
}, [])
const storeSession = (sess: Session) => {
sess ? storage.set('session', sess) : storage.remove('session')
setSession(sess)
}
return session
}
export default useSession