Files
gridpilot.gg/apps/website/hooks/race/useAllRacesPageData.ts
2026-01-18 13:26:35 +01:00

25 lines
862 B
TypeScript

import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { RacesViewDataBuilder } from '@/lib/builders/view-data/RacesViewDataBuilder';
import { RacesViewData } from '@/lib/view-data/RacesViewData';
export function useAllRacesPageData(initialData?: RacesViewData | null) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useQuery({
queryKey: ['races', 'all'],
queryFn: async () => {
const result = await raceService.getAllRacesPageData();
if (result.isErr()) {
throw new Error(result.getError().message);
}
return RacesViewDataBuilder.build(result.unwrap());
},
initialData: initialData ?? undefined,
staleTime: 1000 * 60 * 5,
retry: false,
refetchOnWindowFocus: false,
});
}