From 5a7b7e0b521174d252a20efe77fb662c4e8ddab0 Mon Sep 17 00:00:00 2001 From: Supra4E8C Date: Thu, 2 Apr 2026 23:52:12 +0800 Subject: [PATCH] fix(auth-files): optimize status bar cache --- .../hooks/useAuthFilesStatusBarCache.ts | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/features/authFiles/hooks/useAuthFilesStatusBarCache.ts b/src/features/authFiles/hooks/useAuthFilesStatusBarCache.ts index e14a150..9c2135d 100644 --- a/src/features/authFiles/hooks/useAuthFilesStatusBarCache.ts +++ b/src/features/authFiles/hooks/useAuthFilesStatusBarCache.ts @@ -8,17 +8,32 @@ export function useAuthFilesStatusBarCache(files: AuthFileItem[], usageDetails: return useMemo(() => { const cache = new Map(); + const usageDetailsByAuthIndex = new Map(); + usageDetails.forEach((detail) => { + const authIndexKey = normalizeAuthIndex(detail.auth_index); + if (!authIndexKey) return; + + const list = usageDetailsByAuthIndex.get(authIndexKey); + if (list) { + list.push(detail); + } else { + usageDetailsByAuthIndex.set(authIndexKey, [detail]); + } + }); + + const uniqueAuthIndexKeys = new Set(); files.forEach((file) => { const rawAuthIndex = file['auth_index'] ?? file.authIndex; const authIndexKey = normalizeAuthIndex(rawAuthIndex); + if (!authIndexKey) return; + uniqueAuthIndexKeys.add(authIndexKey); + }); - if (authIndexKey) { - const filteredDetails = usageDetails.filter((detail) => { - const detailAuthIndex = normalizeAuthIndex(detail.auth_index); - return detailAuthIndex !== null && detailAuthIndex === authIndexKey; - }); - cache.set(authIndexKey, calculateStatusBarData(filteredDetails)); - } + uniqueAuthIndexKeys.forEach((authIndexKey) => { + cache.set( + authIndexKey, + calculateStatusBarData(usageDetailsByAuthIndex.get(authIndexKey) ?? []) + ); }); return cache;