diff --git a/src/app/university/application/ScorePageContent.tsx b/src/app/university/application/ScorePageContent.tsx
index 0991f75d..d071d907 100644
--- a/src/app/university/application/ScorePageContent.tsx
+++ b/src/app/university/application/ScorePageContent.tsx
@@ -43,13 +43,7 @@ const ScorePageContent = () => {
thirdChoice: [],
};
- const {
- data: scoreResponseData = initialData,
- isError,
- isLoading,
- } = useGetApplicationsList({
- retry: false,
- });
+ const { data: scoreResponseData = initialData, isError, isLoading } = useGetApplicationsList();
const filteredAndSortedData = useMemo(() => {
// ✨ 1. 대학 이름(koreanName)을 기준으로 중복을 제거하는 헬퍼 함수
diff --git a/src/components/layout/GlobalLayout/ui/ClientModal/index.tsx b/src/components/layout/GlobalLayout/ui/ClientModal/index.tsx
index 92ade71c..957e2246 100644
--- a/src/components/layout/GlobalLayout/ui/ClientModal/index.tsx
+++ b/src/components/layout/GlobalLayout/ui/ClientModal/index.tsx
@@ -33,7 +33,11 @@ const ClientModal = () => {
return (
<>
{isFetching ? (
-
+
) : null}
diff --git a/src/lib/react-query/queryClient.ts b/src/lib/react-query/queryClient.ts
index 8d18bf17..4a42d8ed 100644
--- a/src/lib/react-query/queryClient.ts
+++ b/src/lib/react-query/queryClient.ts
@@ -1,9 +1,30 @@
import type { AxiosError } from "axios";
import { toast } from "@/lib/zustand/useToastStore";
-import { QueryClient } from "@tanstack/react-query";
+import { MutationCache, QueryCache, QueryClient } from "@tanstack/react-query";
const queryClient = new QueryClient({
+ queryCache: new QueryCache({
+ onError: (error) => {
+ // query 실패 시 전역 에러 토스트 (401 제외)
+ const axiosError = error as AxiosError<{ message?: string }>;
+ const status = axiosError?.response?.status;
+ if (status === 401) return; // 인증 오류는 토스트 표시 X
+
+ const errorMessage =
+ axiosError?.response?.data?.message || axiosError?.message || "오류가 발생했습니다. 다시 시도해주세요.";
+ toast.error(errorMessage);
+ },
+ }),
+ mutationCache: new MutationCache({
+ onError: (error) => {
+ // mutation 실패 시 전역 에러 토스트
+ const axiosError = error as AxiosError<{ message?: string }>;
+ const errorMessage =
+ axiosError?.response?.data?.message || axiosError?.message || "오류가 발생했습니다. 다시 시도해주세요.";
+ toast.error(errorMessage);
+ },
+ }),
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000, // 데이터 신선도(5분)
@@ -11,19 +32,10 @@ const queryClient = new QueryClient({
retry: (failureCount, error) => {
const status = (error as AxiosError | undefined)?.response?.status;
if (status === 401) return false; // 인증 오류는 재시도 X
- return failureCount < 3; // 그 외에는 최대 3회까지 재시도
+ return failureCount < 1; // 그 외에는 최대 1회까지 재시도
},
refetchOnWindowFocus: false, // 창 포커스 복귀 시 refetch 비활성
},
- mutations: {
- onError: (error) => {
- // mutation 실패 시 전역 에러 토스트
- const axiosError = error as AxiosError<{ message?: string }>;
- const errorMessage =
- axiosError?.response?.data?.message || axiosError?.message || "오류가 발생했습니다. 다시 시도해주세요.";
- toast.error(errorMessage);
- },
- },
},
});