40 lines
1.1 KiB
TypeScript
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,
|
|
};
|
|
} |