1+ "use client" ;
2+
13import { createContext , useContext , useMemo } from "react" ;
24import { IUser } from "@/types/user.types" ;
35import { useQuery } from "@tanstack/react-query" ;
@@ -8,28 +10,29 @@ interface AuthContextType {
810 isLoading : boolean ;
911 isAuthenticated : boolean ;
1012 error ?: unknown ;
13+ refetchUser : ( ) => void ;
1114}
1215
1316const AuthContext = createContext < AuthContextType | undefined > ( undefined ) ;
1417
1518export const AuthProvider = ( {
16- hasAccessToken ,
19+ initialHasToken ,
1720 children,
1821} : {
19- hasAccessToken : boolean ;
22+ initialHasToken : boolean ;
2023 children : React . ReactNode ;
2124} ) => {
2225 const {
2326 data : user ,
2427 isLoading,
2528 error,
29+ refetch,
2630 } = useQuery < unknown , unknown , IUser > ( {
2731 queryKey : [ "api/user" ] ,
2832 queryFn : getUserInfo ,
29- enabled : hasAccessToken ,
30-
31- staleTime : Infinity ,
32- gcTime : Infinity ,
33+ enabled : initialHasToken ,
34+ staleTime : 5 * 60 * 1000 ,
35+ gcTime : 10 * 60 * 1000 ,
3336 refetchOnMount : false ,
3437 refetchOnWindowFocus : false ,
3538 refetchOnReconnect : false ,
@@ -38,11 +41,12 @@ export const AuthProvider = ({
3841 const value = useMemo (
3942 ( ) => ( {
4043 user,
41- isAuthenticated : Boolean ( hasAccessToken ) ,
42- isLoading,
44+ isAuthenticated : Boolean ( user ) ,
45+ isLoading : initialHasToken && isLoading ,
4346 error,
47+ refetchUser : ( ) => refetch ( ) ,
4448 } ) ,
45- [ user , hasAccessToken , isLoading , error ]
49+ [ user , initialHasToken , isLoading , error , refetch ]
4650 ) ;
4751
4852 return < AuthContext . Provider value = { value } > { children } </ AuthContext . Provider > ;
0 commit comments