di usage in website
This commit is contained in:
40
apps/website/lib/hooks/useRaceResults.ts
Normal file
40
apps/website/lib/hooks/useRaceResults.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
'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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user