mirror of https://github.com/sunface/rust-course
parent
4392b8dfbc
commit
6fc62e38db
@ -1,31 +1,33 @@
|
|||||||
import { useEffect, useState } from "react"
|
import { useEffect, useState } from "react"
|
||||||
import { Session } from "src/types/user"
|
|
||||||
import { requestApi } from "utils/axios/request"
|
import { requestApi } from "utils/axios/request"
|
||||||
import events from "utils/events"
|
import useSWR from 'swr'
|
||||||
import storage from "utils/localStorage"
|
|
||||||
|
|
||||||
function useSession(): Session{
|
export const useSession = () => {
|
||||||
const [session, setSession] = useState(null)
|
const [session,setSession] = useState(null)
|
||||||
|
const { data, revalidate } = useSWR(
|
||||||
|
'/user/session',
|
||||||
|
() =>
|
||||||
|
requestApi.get(`/user/session`).then(res => {
|
||||||
|
return res.data
|
||||||
|
}),
|
||||||
|
{dedupingInterval: 60000}
|
||||||
|
)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const sess = storage.get('session')
|
setSession(data)
|
||||||
if (sess) {
|
},[data])
|
||||||
setSession(sess)
|
|
||||||
}
|
const useLogin = async () => {
|
||||||
|
revalidate()
|
||||||
events.on('set-session',storeSession)
|
}
|
||||||
|
|
||||||
return() => {
|
|
||||||
events.off('set-session',storeSession)
|
|
||||||
}
|
|
||||||
}, [])
|
|
||||||
|
|
||||||
|
|
||||||
const storeSession = (sess: Session) => {
|
const logout = async () => {
|
||||||
sess ? storage.set('session', sess) : storage.remove('session')
|
await requestApi.post("/user/logout")
|
||||||
setSession(sess)
|
setSession(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
return session
|
return {session,useLogin,logout}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default useSession
|
|
||||||
|
export default useSession
|
Loading…
Reference in new issue