import { useMemo } from 'react'; import type { AuthFileItem } from '@/types'; import { calculateStatusBarData, normalizeAuthIndex, type UsageDetail } from '@/utils/usage'; export type AuthFileStatusBarData = ReturnType; export function useAuthFilesStatusBarCache(files: AuthFileItem[], usageDetails: UsageDetail[]) { 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); }); uniqueAuthIndexKeys.forEach((authIndexKey) => { cache.set( authIndexKey, calculateStatusBarData(usageDetailsByAuthIndex.get(authIndexKey) ?? []) ); }); return cache; }, [files, usageDetails]); }