From 1e1b19c358062569437c9dbdbd5e136f6532bdf0 Mon Sep 17 00:00:00 2001 From: Jio Date: Thu, 12 Feb 2026 19:40:46 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EB=A7=A4=EC=B9=AD=ED=98=84?= =?UTF-8?q?=ED=99=A9=20=EC=84=A0=20=EC=A0=9C=EA=B1=B0=20,=20=EB=AF=B8?= =?UTF-8?q?=EC=9D=BD=EC=9D=8C=20=EC=95=8C=EB=A6=BC=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routes/_main.tsx | 22 +++++++++++++++++++ .../business/calendar/calendar-content.tsx | 2 +- app/routes/notification/api/notification.ts | 15 +++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/routes/_main.tsx b/app/routes/_main.tsx index 05e964d0..5ea77a6b 100644 --- a/app/routes/_main.tsx +++ b/app/routes/_main.tsx @@ -6,16 +6,29 @@ import Logo from "../assets/logo/realmatch-logo-line.png"; import bellIcon from "../assets/icon/icon-bell.svg"; import redDot from "../assets/icon/red-dot.svg"; import { tokenStorage } from "../lib/token"; +import { fetchUnreadCount } from "../routes/notification/api/notification"; export default function MainLayout() { const [hideBottomTab, setHideBottomTab] = useState(false); const [hideHeader, setHideHeader] = useState(false); const [disableScroll, setDisableScroll] = useState(false); const [isPWA, setIsPWA] = useState(false); + const [unreadCount, setUnreadCount] = useState(0); const navigate = useNavigate(); const location = useLocation(); const mainRef = useRef(null); + const updateUnreadCount = async () => { + try { + const data = await fetchUnreadCount(); + if (data.isSuccess) { + setUnreadCount(data.result.count); + } + } catch (error) { + console.error("미읽음 알림 조회 실패:", error); + } + }; + // PWA 감지 useEffect(() => { const checkPWA = () => { @@ -40,6 +53,13 @@ export default function MainLayout() { } }, [navigate]); + useEffect(() => { + const accessToken = tokenStorage.getAccessToken(); + if (accessToken) { + updateUnreadCount(); // 로그인 상태면 개수 조회 + } + }, [location.pathname]); + return ( + {unreadCount > 0 && ( + )} diff --git a/app/routes/business/calendar/calendar-content.tsx b/app/routes/business/calendar/calendar-content.tsx index 934959ca..187e3d2f 100644 --- a/app/routes/business/calendar/calendar-content.tsx +++ b/app/routes/business/calendar/calendar-content.tsx @@ -142,7 +142,7 @@ export default function CalendarContent() { return (
-
+