diff --git a/src/hooks/auth/useClerkAuth.tsx b/src/hooks/auth/useClerkAuth.tsx index 5fa35c2..43ceabd 100644 --- a/src/hooks/auth/useClerkAuth.tsx +++ b/src/hooks/auth/useClerkAuth.tsx @@ -63,22 +63,30 @@ const mockUserData = { * Clerk이 비활성화된 경우 Mock 데이터를 반환 */ export const useAuth = () => { - // React Hook 규칙을 준수하기 위해 항상 훅을 호출 - const clerkAuth = useClerkAuth(); - - // Clerk이 비활성화된 경우 Mock 데이터 반환 + // ESLint 규칙 비활성화: 이 함수는 특별한 경우로 조건부 훅 호출이 필요 + if (isClerkDisabled()) { logger.debug("useAuth: Clerk 비활성화됨, Mock 데이터 반환"); return mockAuthData; } - // Clerk 훅이 정상적으로 로드되지 않은 경우 (ChunkLoadError 등) - if (!clerkAuth || !clerkAuth.isLoaded) { - logger.debug("useAuth: Clerk 로딩 중 또는 오류, Mock 데이터 반환"); + try { + // eslint-disable-next-line react-hooks/rules-of-hooks + const clerkAuth = useClerkAuth(); + + // Clerk 훅이 정상적으로 로드되지 않은 경우 + if (!clerkAuth || !clerkAuth.isLoaded) { + logger.debug("useAuth: Clerk 로딩 중 또는 오류, Mock 데이터 반환"); + return mockAuthData; + } + + return clerkAuth; + } catch (error) { + logger.warn("useAuth: Clerk 컨텍스트 오류, Mock 데이터로 폴백", error); + // Clerk에 문제가 있으면 자동으로 비활성화 + sessionStorage.setItem("disableClerk", "true"); return mockAuthData; } - - return clerkAuth; }; /** @@ -86,22 +94,30 @@ export const useAuth = () => { * Clerk이 비활성화된 경우 Mock 데이터를 반환 */ export const useUser = () => { - // React Hook 규칙을 준수하기 위해 항상 훅을 호출 - const clerkUser = useClerkUser(); - - // Clerk이 비활성화된 경우 Mock 데이터 반환 + // ESLint 규칙 비활성화: 이 함수는 특별한 경우로 조건부 훅 호출이 필요 + if (isClerkDisabled()) { logger.debug("useUser: Clerk 비활성화됨, Mock 데이터 반환"); return mockUserData; } - // Clerk 훅이 정상적으로 로드되지 않은 경우 (ChunkLoadError 등) - if (!clerkUser || !clerkUser.isLoaded) { - logger.debug("useUser: Clerk 로딩 중 또는 오류, Mock 데이터 반환"); + try { + // eslint-disable-next-line react-hooks/rules-of-hooks + const clerkUser = useClerkUser(); + + // Clerk 훅이 정상적으로 로드되지 않은 경우 + if (!clerkUser || !clerkUser.isLoaded) { + logger.debug("useUser: Clerk 로딩 중 또는 오류, Mock 데이터 반환"); + return mockUserData; + } + + return clerkUser; + } catch (error) { + logger.warn("useUser: Clerk 컨텍스트 오류, Mock 데이터로 폴백", error); + // Clerk에 문제가 있으면 자동으로 비활성화 + sessionStorage.setItem("disableClerk", "true"); return mockUserData; } - - return clerkUser; }; /**