From f171a26a75c800131cdf435bdf77fa32c7f3560d Mon Sep 17 00:00:00 2001 From: Jungu Lee <1zzangjun@gmail.com> Date: Sun, 3 Dec 2023 14:30:28 +0900 Subject: [PATCH] =?UTF-8?q?New=20:=20=EB=82=B4=20=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=B2=B4=ED=81=AC=EC=8B=A4=ED=8C=A8=EC=8B=9C=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=95=84=EC=9B=83=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/queries/auth/useMyInfoQuery.tsx | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/client/src/queries/auth/useMyInfoQuery.tsx b/client/src/queries/auth/useMyInfoQuery.tsx index c16dada..4630e86 100644 --- a/client/src/queries/auth/useMyInfoQuery.tsx +++ b/client/src/queries/auth/useMyInfoQuery.tsx @@ -4,15 +4,35 @@ import useAxiosPrivate from "@/hooks/useAxiosPrivate"; import { MyInfoInterface } from "@/types/auth/myInfo"; import getTokenFromLocalStorage from "@/utils/getTokenFromLocalStorage"; import { useQuery } from "@tanstack/react-query"; +import { isAxiosError } from "axios"; +import { useRouter } from "next/navigation"; +import useLogoutMutation from "./useLogoutMutation"; -export const useMyInfoQuery = () => - useQuery({ +export const useMyInfoQuery = () => { + const router = useRouter(); + const { mutate: logout } = useLogoutMutation(); + + return useQuery({ queryKey: MyInfoQueryKeys.all, - queryFn: getMyInfoByLocalStorage, + queryFn: async () => { + try { + return await getMyInfoByLocalStorage(); + } catch (err) { + // FIXME 토큰만료체크시 로그아웃 로직 분리 필요 + if (isAxiosError(err) && err.response) { + if (err.response.status === 401 && getTokenFromLocalStorage()) { + logout(); + } + } + throw Error(); + } + }, }); +}; export const getMyInfoByLocalStorage = async () => { const accessToken = getTokenFromLocalStorage(); + if (!accessToken) { return null; }