CoastalCommitsPastes/client/lib/hooks/use-user-data.ts

47 lines
1.1 KiB
TypeScript
Raw Normal View History

2022-11-09 23:11:36 -08:00
import { TOKEN_COOKIE_NAME } from "@lib/constants"
2022-03-29 00:19:33 -07:00
import { User } from "@lib/types"
import { deleteCookie, getCookie } from "cookies-next"
2022-11-09 18:38:05 -08:00
import { useRouter } from "next/navigation"
import { useEffect, useState } from "react"
const useUserData = () => {
2022-11-09 23:11:36 -08:00
const cookie = getCookie(TOKEN_COOKIE_NAME)
2022-03-29 00:19:33 -07:00
const [authToken, setAuthToken] = useState<string>(
cookie ? String(cookie) : ""
2022-03-29 00:19:33 -07:00
)
const [user, setUser] = useState<User>()
const router = useRouter()
useEffect(() => {
2022-11-09 23:11:36 -08:00
const token = getCookie(TOKEN_COOKIE_NAME)
2022-03-29 00:19:33 -07:00
if (token) {
setAuthToken(String(token))
2022-03-29 00:19:33 -07:00
}
}, [setAuthToken])
2022-03-29 00:19:33 -07:00
useEffect(() => {
if (authToken) {
const fetchUser = async () => {
const response = await fetch(`/api/user/self`, {
2022-03-29 00:19:33 -07:00
headers: {
Authorization: `Bearer ${authToken}`
}
})
if (response.ok) {
const user = await response.json()
setUser(user)
} else {
2022-11-09 23:11:36 -08:00
// deleteCookie("drift-token")
// setAuthToken("")
// router.push("/")
console.log("not ok")
2022-03-29 00:19:33 -07:00
}
}
fetchUser()
}
}, [authToken, router])
2022-03-29 00:19:33 -07:00
return user
}
2022-03-29 00:19:33 -07:00
export default useUserData