fix(admin): 避免徽标刷新响应乱序

This commit is contained in:
linkeyu
2026-07-22 09:49:54 +08:00
parent c3b77479a0
commit 59748c7b7f
+5 -1
View File
@@ -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<AdminInfo | null>(null);
const [collapsed, setCollapsed] = useState(false);
const [pendingReviewCounts, setPendingReviewCounts] = useState<Partial<Record<ReviewBadgeKey, number>>>({});
const reviewRefreshVersion = useRef<Partial<Record<ReviewBadgeKey, number>>>({});
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<WithdrawSummary>('/admin/api/withdraws/summary')).data.reviewing_count;
@@ -139,6 +142,7 @@ export default function MainLayout({ children }: { children: React.ReactNode })
} else {
count = (await api.get<FeedbackSummary>('/admin/api/feedbacks/summary')).data.pending;
}
if (reviewRefreshVersion.current[key] !== version) return;
setPendingReviewCounts((current) => ({ ...current, [key]: count }));
};