diff --git a/src/components/Navbar/navbar.client.tsx b/src/components/Navbar/navbar.client.tsx index b892fc2..e4efb08 100644 --- a/src/components/Navbar/navbar.client.tsx +++ b/src/components/Navbar/navbar.client.tsx @@ -28,8 +28,9 @@ export default function Navbar() { setShowTutorial(false); }; - // hydration mismatch 방지용 const [mounted, setMounted] = useState(false); + const [menuOpen, setMenuOpen] = useState(false); + useEffect(() => { setMounted(true); }, []); @@ -37,28 +38,13 @@ export default function Navbar() { const handleInvestClick = async () => { try { - if (!auth?.token) { - console.warn("로그인 필요"); - return router.push("/auth/login"); - } + if (!auth?.token) return router.push("/auth/login"); const status = await checkUserStatus(auth.token); - //("이미 연동 완료된 user: ", status.hasHoldings); - - if (status.hasHoldings) { - const stockData = await getStock(auth.token); - const firstCode = stockData.stocks[0]?.stock_code._id; - //console.log("주식 조회", firstCode); - if (firstCode) { - router.push(`/investment/${firstCode}`); - } else { - router.push("/investment"); - } - } else { - router.push("/investment"); - } + const stockData = await getStock(auth.token); + const firstCode = stockData.stocks[0]?.stock_code._id; + router.push(firstCode ? `/investment/${firstCode}` : "/investment"); } catch (err) { - console.error("실전예측 이동 중 오류:", err); router.push("/investment"); } }; @@ -66,9 +52,7 @@ export default function Navbar() { const handleLogout = async () => { try { await fetch("/api/auth/logout", { method: "POST" }); - } catch (e) { - console.warn("서버 로그아웃 실패"); - } + } catch {} sessionStorage.removeItem("token"); clearAuth(); router.replace("/auth/login"); @@ -78,16 +62,23 @@ export default function Navbar() { router.push("/auth/login"); }; + const handleTutorialOpen = () => { + localStorage.setItem("hideTutorial", "false"); + window.dispatchEvent(new Event("open-tutorial")); + setMenuOpen(false); // 모바일일 경우 닫아줌 + }; + + const navButtonClass = (isActive: boolean) => + "text-base transition-colors cursor-pointer " + + (isActive + ? "text-[#396FFB] hover:text-blue-500 font-semibold" + : "text-[#E2E2E2] hover:text-white"); + return ( -