diff --git a/src/app/(user)/mypage/layout.tsx b/src/app/(user)/mypage/layout.tsx index 9314c0d8..5c3fc051 100644 --- a/src/app/(user)/mypage/layout.tsx +++ b/src/app/(user)/mypage/layout.tsx @@ -1,5 +1,3 @@ -import { redirect } from 'next/navigation'; - import { dehydrate, HydrationBoundary } from '@tanstack/react-query'; import { API } from '@/api'; @@ -10,17 +8,15 @@ interface Props { children: React.ReactNode; } +export const dynamic = 'force-dynamic'; + const MyPageLayout = async ({ children }: Props) => { const queryClient = getQueryClient(); - try { - await queryClient.fetchQuery({ - queryKey: userKeys.me(), - queryFn: () => API.userService.getMe(), - }); - } catch { - redirect('/login'); - } + await queryClient.fetchQuery({ + queryKey: userKeys.me(), + queryFn: () => API.userService.getMe(), + }); return {children}; }; diff --git a/src/app/(user)/profile/[userId]/layout.tsx b/src/app/(user)/profile/[userId]/layout.tsx index f174a250..d0d00266 100644 --- a/src/app/(user)/profile/[userId]/layout.tsx +++ b/src/app/(user)/profile/[userId]/layout.tsx @@ -1,4 +1,4 @@ -import { redirect } from 'next/navigation'; +import { notFound, redirect } from 'next/navigation'; import { dehydrate, HydrationBoundary } from '@tanstack/react-query'; @@ -15,22 +15,19 @@ const ProfileLayout = async ({ children, params }: Props) => { const { userId: id } = await params; const userId = Number(id); - const { cookies } = await import('next/headers'); - const cookieStore = await cookies(); - const myId = Number(cookieStore.get('userId')?.value); - - // 본인 id와 같은지 확인 후 같으면 mypage로 리다이렉트 - if (userId === myId) { - redirect('/mypage'); - } + // userId가 숫자가 아닌 경우 notFound redirect 처리 + if (isNaN(userId)) notFound(); const queryClient = getQueryClient(); - await queryClient.fetchQuery({ + const user = await queryClient.fetchQuery({ queryKey: userKeys.item(userId), queryFn: () => API.userService.getUser({ userId }), }); + // isFollow가 null이면 본인 페이지 이므로 mypage로 redirect 처리 + if (user.isFollow === null) redirect('/mypage'); + return {children}; }; diff --git a/src/mock/service/user/user-mock.ts b/src/mock/service/user/user-mock.ts index 389cde55..6e87ffc0 100644 --- a/src/mock/service/user/user-mock.ts +++ b/src/mock/service/user/user-mock.ts @@ -15,7 +15,7 @@ export const mockUserItems: User[] = [ createdAt: '2025-12-07T17:00:00+09:00', groupJoinedCnt: 5, groupCreatedCnt: 3, - isFollow: true, + isFollow: null, }, { userId: 2, diff --git a/src/types/service/user.ts b/src/types/service/user.ts index 71eaa520..18fe57f0 100644 --- a/src/types/service/user.ts +++ b/src/types/service/user.ts @@ -11,7 +11,7 @@ export interface User { groupCreatedCnt: number; isNotificationEnabled: boolean; createdAt: string; - isFollow: boolean; + isFollow: boolean | null; } export interface GetUserPathParams {