Files
gridpilot.gg/apps/website/lib/hooks/useRaceResults.ts
2026-01-06 19:36:03 +01:00

40 lines
1.1 KiB
TypeScript

'use client';
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_RESULTS_SERVICE_TOKEN } from '@/lib/di/tokens';
/**
* Hook for race results data
*/
export function useRaceResults(raceId: string, currentUserId?: string) {
const raceResultsService = useInject(RACE_RESULTS_SERVICE_TOKEN);
const raceQuery = useQuery({
queryKey: ['raceResults', raceId, currentUserId],
queryFn: async () => {
return await raceResultsService.getResultsDetail(raceId, currentUserId);
},
staleTime: 2 * 60 * 1000, // 2 minutes
gcTime: 5 * 60 * 1000, // 5 minutes
enabled: !!raceId,
});
const sofQuery = useQuery({
queryKey: ['raceSof', raceId],
queryFn: async () => {
return await raceResultsService.getWithSOF(raceId);
},
staleTime: 2 * 60 * 1000, // 2 minutes
gcTime: 5 * 60 * 1000, // 5 minutes
enabled: !!raceId,
});
return {
raceData: raceQuery.data,
isLoading: raceQuery.isLoading || sofQuery.isLoading,
error: raceQuery.error || sofQuery.error,
retry: raceQuery.refetch,
sofData: sofQuery.data,
};
}