From 370c2d3ef51329c84e40659c7c9b15b5a0a249b3 Mon Sep 17 00:00:00 2001 From: MIJUUUUU Date: Mon, 21 Sep 2026 15:07:12 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix(client):=20=ED=99=88=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=95=84=20=EC=B4=88=EA=B8=B0=20=ED=91=9C=EC=8B=9C=20?= =?UTF-8?q?=EA=B9=9C=EB=B9=A1=EC=9E=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/(app)/home/page.tsx | 12 +++++++++++- src/components/layout/HomeHeader.tsx | 6 +++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/app/(app)/home/page.tsx b/src/app/(app)/home/page.tsx index f1b386a..800d221 100644 --- a/src/app/(app)/home/page.tsx +++ b/src/app/(app)/home/page.tsx @@ -71,6 +71,7 @@ export default function HomePage() { const { data: session, status } = useSession(); const [userName, setUserName] = useState(null); const [profileImageUrl, setProfileImageUrl] = useState(null); + const [loadedProfileUserId, setLoadedProfileUserId] = useState(null); const [communityPosts, setCommunityPosts] = useState([]); const [popularPlaces, setPopularPlaces] = useState([]); const [popularLoading, setPopularLoading] = useState(true); @@ -116,6 +117,9 @@ export default function HomePage() { }) .catch(() => { if (!cancelled) setUserName(session?.user?.name ?? null); + }) + .finally(() => { + if (!cancelled) setLoadedProfileUserId(userId); }); return () => { @@ -124,6 +128,11 @@ export default function HomePage() { }, [session]); const displayName = greetingName(userName ?? session?.user?.name); + const displayProfileImage = profileImageUrl ?? session?.user?.image ?? null; + const sessionUserId = session?.user?.id != null ? Number(session.user.id) : null; + const profileLoading = + status === "loading" || + (sessionUserId !== null && loadedProfileUserId !== sessionUserId && !displayProfileImage); async function openFallbackPlace(place: (typeof POPULAR_FALLBACK_PLACES)[number]) { if (resolvingFallback) return; @@ -157,8 +166,9 @@ export default function HomePage() { return (
diff --git a/src/components/layout/HomeHeader.tsx b/src/components/layout/HomeHeader.tsx index be90380..2d8861d 100644 --- a/src/components/layout/HomeHeader.tsx +++ b/src/components/layout/HomeHeader.tsx @@ -15,9 +15,11 @@ const NOTIFICATION_COUNT_POLLING_MS = 60_000; export default function HomeHeader({ profileImageUrl, profileLabel = "누비", + profileLoading = false, }: { profileImageUrl?: string | null; profileLabel?: string; + profileLoading?: boolean; }) { const { status } = useSession(); const profileImage = profileImageUrl; @@ -79,7 +81,9 @@ export default function HomeHeader({ aria-label="내 정보" className="relative grid size-9 shrink-0 place-items-center overflow-hidden rounded-full bg-linear-to-br from-[#79A9F2] to-[#574BCB] text-xs font-bold text-white shadow-[0_5px_12px_rgba(61,85,169,0.16)] ring-1 ring-white/75" > - {profileImage ? ( + {profileLoading ? ( +