30 lines
751 B
TypeScript
30 lines
751 B
TypeScript
import { UserApi } from "@/lib/api";
|
|
import useSWR from "swr";
|
|
|
|
export function useUserMe({ onError }: { onError?: (e: any) => void } = {}) {
|
|
const isClientSide = typeof window !== 'undefined';
|
|
|
|
const { data: user, isLoading, error } = useSWR(
|
|
'/api/user/me',
|
|
async () => UserApi.me(),
|
|
{
|
|
onError: (error) => {
|
|
if (error.statusCode === 401) {
|
|
if (isClientSide) {
|
|
localStorage.removeItem('token');
|
|
}
|
|
}
|
|
|
|
onError?.(error);
|
|
},
|
|
revalidateIfStale: false,
|
|
revalidateOnFocus: false,
|
|
}
|
|
);
|
|
|
|
return {
|
|
user,
|
|
isLoading,
|
|
error
|
|
}
|
|
} |