diff --git a/src/entities/user/api/user-api.server.ts b/src/entities/user/api/user-api.server.ts
index 4d9077bd..0b82ab9a 100644
--- a/src/entities/user/api/user-api.server.ts
+++ b/src/entities/user/api/user-api.server.ts
@@ -1,5 +1,3 @@
-import { cache } from "react";
-
import { cookies } from "next/headers";
import { fetch as apiFetch } from "@/shared/api/server";
@@ -14,7 +12,7 @@ interface UserApiResponse {
isOwner: boolean;
}
-export const getUserProfileServer = cache(async (targetUserId: number) => {
+export const getUserProfileServer = async (targetUserId: number) => {
const cookieStore = await cookies();
const accessToken = cookieStore.get("accessToken")?.value;
@@ -45,4 +43,4 @@ export const getUserProfileServer = cache(async (targetUserId: number) => {
} catch {
return null;
}
-});
+};
diff --git a/src/entities/user/index.ts b/src/entities/user/index.ts
index a8324991..6bbdaa32 100644
--- a/src/entities/user/index.ts
+++ b/src/entities/user/index.ts
@@ -3,4 +3,9 @@ export type { UserProfileType } from "./model/types";
export type { UserBasicInfoResponseType } from "./model/types";
export { DASHBOARD_TABS } from "./model/dashboard-tabs.config";
export type { TabIdType, TabConfig } from "./model/types";
-export { getUserProfile, updateUserProfileImage, updateUserName } from "./api/user-api";
+export {
+ getUserProfile,
+ getUserBasic,
+ updateUserProfileImage,
+ updateUserName,
+} from "./api/user-api";
diff --git a/src/features/user/api/use-my-profile.ts b/src/features/user/api/use-my-profile.ts
index 701aac4f..d6906437 100644
--- a/src/features/user/api/use-my-profile.ts
+++ b/src/features/user/api/use-my-profile.ts
@@ -1,11 +1,13 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { getUserProfile, updateUserProfileImage, updateUserName } from "@/entities/user";
-import type { UserProfileType } from "@/entities/user"; // 타입 위치에 맞게 수정
+import type { UserProfileType } from "@/entities/user";
import { showToast } from "@/shared/lib/utils/toast/show-toast";
export const userKeys = {
- profile: (userId: number) => ["user", "profile", userId] as const,
+ all: ["user"] as const,
+ basic: () => [...userKeys.all, "basic"] as const,
+ profile: (userId: number) => [...userKeys.all, "profile", userId] as const,
};
export function useUserProfile(userId: number, initialData?: UserProfileType) {
diff --git a/src/features/user/api/use-user-basic.ts b/src/features/user/api/use-user-basic.ts
new file mode 100644
index 00000000..d00a6508
--- /dev/null
+++ b/src/features/user/api/use-user-basic.ts
@@ -0,0 +1,24 @@
+"use client";
+
+import { useQuery } from "@tanstack/react-query";
+
+import { getUserBasic } from "@/entities/user";
+import { userKeys } from "@/features/user/api/use-my-profile";
+
+async function fetchUserBasic() {
+ try {
+ return await getUserBasic();
+ } catch {
+ return null;
+ }
+}
+
+export function useUserBasic() {
+ return useQuery({
+ queryKey: userKeys.basic(),
+ queryFn: fetchUserBasic,
+ retry: false,
+ staleTime: 1000 * 60 * 5,
+ refetchOnWindowFocus: false,
+ });
+}
diff --git a/src/widgets/header/header.tsx b/src/widgets/header/header.tsx
index 2adc1b9f..d6bda7fc 100644
--- a/src/widgets/header/header.tsx
+++ b/src/widgets/header/header.tsx
@@ -1,23 +1,14 @@
-import { cookies } from "next/headers";
+import { Suspense } from "react";
+
import Image from "next/image";
import Link from "next/link";
-import { LogIn } from "lucide-react";
-
import Logo from "@/shared/assets/icons/windfall.svg";
-import { ROUTES } from "@/shared/config/routes";
import { Container } from "@/shared/ui";
-import Button from "@/shared/ui/button/button";
-import HeaderActions from "@/widgets/header/ui/header-actions";
+import HeaderAuthSlot from "@/widgets/header/ui/header-auth-slot";
import HeaderSearch from "@/widgets/header/ui/header-search";
-export async function Header() {
- const cookieStore = await cookies();
- const userId = cookieStore.get("userId")?.value;
-
- const numericUserId = Number(userId);
- const hasValidUserId = Number.isInteger(numericUserId) && numericUserId > 0;
-
+export function Header() {
return (