di usage in website

This commit is contained in:
2026-01-06 19:36:03 +01:00
parent 589b55a87e
commit e589c30bf8
191 changed files with 6367 additions and 4253 deletions

View File

@@ -0,0 +1,15 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { ApiError } from '@/lib/api/base/ApiError';
export function useCancelRace(
options?: Omit<UseMutationOptions<void, ApiError, string>, 'mutationFn'>
) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useMutation<void, ApiError, string>({
mutationFn: (raceId) => raceService.cancelRace(raceId),
...options,
});
}

View File

@@ -0,0 +1,15 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { ApiError } from '@/lib/api/base/ApiError';
export function useCompleteRace(
options?: Omit<UseMutationOptions<void, ApiError, string>, 'mutationFn'>
) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useMutation<void, ApiError, string>({
mutationFn: (raceId) => raceService.completeRace(raceId),
...options,
});
}

View File

@@ -0,0 +1,16 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { ApiError } from '@/lib/api/base/ApiError';
import type { FileProtestCommandDTO } from '@/lib/types/generated/FileProtestCommandDTO';
export function useFileProtest(
options?: Omit<UseMutationOptions<void, ApiError, FileProtestCommandDTO>, 'mutationFn'>
) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useMutation<void, ApiError, FileProtestCommandDTO>({
mutationFn: (command) => raceService.fileProtest(command),
...options,
});
}

View File

@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useRaceDetail(raceId: string, driverId: string) {
const raceService = useInject(RACE_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['raceDetail', raceId, driverId],
queryFn: () => raceService.getRaceDetail(raceId, driverId),
enabled: !!raceId && !!driverId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_RESULTS_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useRaceResultsDetail(raceId: string, currentUserId?: string) {
const raceResultsService = useInject(RACE_RESULTS_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['raceResultsDetail', raceId, currentUserId],
queryFn: () => raceResultsService.getResultsDetail(raceId, currentUserId),
enabled: !!raceId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_STEWARDING_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useRaceStewardingData(raceId: string, currentDriverId?: string) {
const raceStewardingService = useInject(RACE_STEWARDING_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['raceStewardingData', raceId, currentDriverId],
queryFn: () => raceStewardingService.getRaceStewardingData(raceId, currentDriverId || ''),
enabled: !!raceId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,16 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_RESULTS_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useRaceWithSOF(raceId: string) {
const raceResultsService = useInject(RACE_RESULTS_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['raceWithSOF', raceId],
queryFn: () => raceResultsService.getWithSOF(raceId),
enabled: !!raceId,
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,15 @@
import { useQuery } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError';
export function useRacesPageData() {
const raceService = useInject(RACE_SERVICE_TOKEN);
const queryResult = useQuery({
queryKey: ['racesPageData'],
queryFn: () => raceService.getRacesPageData(),
});
return enhanceQueryResult(queryResult);
}

View File

@@ -0,0 +1,21 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { ApiError } from '@/lib/api/base/ApiError';
interface RegisterForRaceParams {
raceId: string;
leagueId: string;
driverId: string;
}
export function useRegisterForRace(
options?: Omit<UseMutationOptions<void, ApiError, RegisterForRaceParams>, 'mutationFn'>
) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useMutation<void, ApiError, RegisterForRaceParams>({
mutationFn: (params) => raceService.registerForRace(params.raceId, params.leagueId, params.driverId),
...options,
});
}

View File

@@ -0,0 +1,15 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { ApiError } from '@/lib/api/base/ApiError';
export function useReopenRace(
options?: Omit<UseMutationOptions<void, ApiError, string>, 'mutationFn'>
) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useMutation<void, ApiError, string>({
mutationFn: (raceId) => raceService.reopenRace(raceId),
...options,
});
}

View File

@@ -0,0 +1,20 @@
import { useMutation, UseMutationOptions } from '@tanstack/react-query';
import { useInject } from '@/lib/di/hooks/useInject';
import { RACE_SERVICE_TOKEN } from '@/lib/di/tokens';
import { ApiError } from '@/lib/api/base/ApiError';
interface WithdrawFromRaceParams {
raceId: string;
driverId: string;
}
export function useWithdrawFromRace(
options?: Omit<UseMutationOptions<void, ApiError, WithdrawFromRaceParams>, 'mutationFn'>
) {
const raceService = useInject(RACE_SERVICE_TOKEN);
return useMutation<void, ApiError, WithdrawFromRaceParams>({
mutationFn: (params) => raceService.withdrawFromRace(params.raceId, params.driverId),
...options,
});
}