diff --git a/src/app/(main)/layout.tsx b/src/app/(main)/layout.tsx index 220c923..609375c 100644 --- a/src/app/(main)/layout.tsx +++ b/src/app/(main)/layout.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { usePathname, useRouter } from 'next/navigation'; import { BarChartOutlined, @@ -106,6 +106,7 @@ export default function MainLayout({ children }: { children: React.ReactNode }) const [admin, setAdmin] = useState(null); const [collapsed, setCollapsed] = useState(false); const [pendingReviewCounts, setPendingReviewCounts] = useState>>({}); + const reviewRefreshVersion = useRef>>({}); useEffect(() => { const token = getToken(); @@ -131,6 +132,8 @@ export default function MainLayout({ children }: { children: React.ReactNode }) const refresh = async (key: ReviewBadgeKey) => { if (!canAccess(key.slice(1))) return; + const version = (reviewRefreshVersion.current[key] ?? 0) + 1; + reviewRefreshVersion.current[key] = version; let count: number; if (key === '/withdraws') { count = (await api.get('/admin/api/withdraws/summary')).data.reviewing_count; @@ -139,6 +142,7 @@ export default function MainLayout({ children }: { children: React.ReactNode }) } else { count = (await api.get('/admin/api/feedbacks/summary')).data.pending; } + if (reviewRefreshVersion.current[key] !== version) return; setPendingReviewCounts((current) => ({ ...current, [key]: count })); };