import { useMemo, useRef, useState } from "react"; import { useQuery, useQueryClient } from "@tanstack/react-query"; import { useSearchParams } from "react-router-dom"; import { useLeaderboard } from "../context/LeaderboardContext"; import { useDataProcessing } from "../components/Table/hooks/useDataProcessing"; const CACHE_KEY = "leaderboardData"; const CACHE_DURATION = 5 * 60 * 1000; // 5 minutes export const useLeaderboardData = () => { return { data: [], // 直接返回空数组,我们使用硬编码数据 isLoading: false, error: null, refetch: () => {} }; }; export const useLeaderboardProcessing = () => { const { state, actions } = useLeaderboard(); const [sorting, setSorting] = useState([ { id: "model.average_score", desc: true }, ]); const memoizedData = useMemo(() => state.models, [state.models]); const memoizedFilters = useMemo( () => ({ search: state.filters.search, precisions: state.filters.precisions, types: state.filters.types, paramsRange: state.filters.paramsRange, booleanFilters: state.filters.booleanFilters, isOfficialProviderActive: state.filters.isOfficialProviderActive, }), [ state.filters.search, state.filters.precisions, state.filters.types, state.filters.paramsRange, state.filters.booleanFilters, state.filters.isOfficialProviderActive, ] ); const { table, minAverage, maxAverage, getColorForValue, processedData, filteredData, columns, columnVisibility, } = useDataProcessing( memoizedData, memoizedFilters.search, memoizedFilters.precisions, memoizedFilters.types, memoizedFilters.paramsRange, memoizedFilters.booleanFilters, sorting, state.display.rankingMode, state.display.averageMode, state.display.visibleColumns, state.display.scoreDisplay, state.pinnedModels, actions.togglePinnedModel, setSorting, memoizedFilters.isOfficialProviderActive ); return { table, minAverage, maxAverage, getColorForValue, processedData, filteredData, columns, columnVisibility, loading: state.loading, error: state.error, }; };