This commit is contained in:
2025-12-17 14:04:11 +01:00
parent 1ea9c9649f
commit daa4bb6576
238 changed files with 4263 additions and 1752 deletions

View File

@@ -10,7 +10,7 @@ import Breadcrumbs from '@/components/layout/Breadcrumbs';
import FileProtestModal from '@/components/races/FileProtestModal';
import EndRaceModal from '@/components/leagues/EndRaceModal';
import SponsorInsightsCard, { useSponsorMode, MetricBuilders, SlotTemplates } from '@/components/sponsors/SponsorInsightsCard';
import { getGetRaceDetailUseCase, getRegisterForRaceUseCase, getWithdrawFromRaceUseCase, getCancelRaceUseCase, getCompleteRaceUseCase } from '@/lib/di-container';
import { apiClient } from '@/lib/apiClient';
import { useEffectiveDriverId } from '@/lib/currentDriver';
import { getMembership, isOwnerOrAdmin } from '@/lib/leagueMembership';
import type {
@@ -61,10 +61,7 @@ export default function RaceDetailPage() {
setLoading(true);
setError(null);
try {
const useCase = getGetRaceDetailUseCase();
const presenter = new RaceDetailPresenter();
await useCase.execute({ raceId, driverId: currentDriverId }, presenter);
const vm = presenter.getViewModel();
const vm = await apiClient.races.getDetail(raceId, currentDriverId);
if (!vm) {
throw new Error('Race detail not available');
}
@@ -130,8 +127,7 @@ export default function RaceDetailPage() {
setCancelling(true);
try {
const useCase = getCancelRaceUseCase();
await useCase.execute({ raceId: race.id });
await apiClient.races.cancel(race.id);
await loadRaceData();
} catch (err) {
alert(err instanceof Error ? err.message : 'Failed to cancel race');
@@ -153,9 +149,7 @@ export default function RaceDetailPage() {
setRegistering(true);
try {
const useCase = getRegisterForRaceUseCase();
await useCase.execute({
raceId: race.id,
await apiClient.races.register(race.id, {
leagueId: league.id,
driverId: currentDriverId,
});
@@ -180,9 +174,7 @@ export default function RaceDetailPage() {
setRegistering(true);
try {
const useCase = getWithdrawFromRaceUseCase();
await useCase.execute({
raceId: race.id,
await apiClient.races.withdraw(race.id, {
driverId: currentDriverId,
});
await loadRaceData();
@@ -984,8 +976,7 @@ export default function RaceDetailPage() {
raceName={race.track}
onConfirm={async () => {
try {
const completeRace = getCompleteRaceUseCase();
await completeRace.execute({ raceId: race.id });
await apiClient.races.complete(race.id);
await loadRaceData();
setShowEndRaceModal(false);
} catch (err) {