'use client'; import { useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { LeagueDetailTemplate } from '@/templates/LeagueDetailTemplate'; import { useEffectiveDriverId } from '@/hooks/useEffectiveDriverId'; import { useSponsorMode } from '@/components/sponsors/SponsorInsightsCard'; import EndRaceModal from '@/components/leagues/EndRaceModal'; // Shared state components import { StateContainer } from '@/components/shared/state/StateContainer'; import { useLeagueDetailWithSponsors } from '@/hooks/league/useLeagueDetailWithSponsors'; import { useInject } from '@/lib/di/hooks/useInject'; import { LEAGUE_MEMBERSHIP_SERVICE_TOKEN, RACE_SERVICE_TOKEN } from '@/lib/di/tokens'; import { Trophy } from 'lucide-react'; export default function LeagueDetailInteractive() { const router = useRouter(); const params = useParams(); const leagueId = params.id as string; const isSponsor = useSponsorMode(); const leagueMembershipService = useInject(LEAGUE_MEMBERSHIP_SERVICE_TOKEN); const raceService = useInject(RACE_SERVICE_TOKEN); const [endRaceModalRaceId, setEndRaceModalRaceId] = useState(null); const currentDriverId = useEffectiveDriverId(); const membership = leagueMembershipService.getMembership(leagueId, currentDriverId); const { data: viewModel, isLoading, error, retry } = useLeagueDetailWithSponsors(leagueId); const handleMembershipChange = () => { retry(); }; const handleEndRaceModalOpen = (raceId: string) => { setEndRaceModalRaceId(raceId); }; const handleLiveRaceClick = (raceId: string) => { router.push(`/races/${raceId}`); }; const handleBackToLeagues = () => { router.push('/leagues'); }; const handleEndRaceConfirm = async () => { if (!endRaceModalRaceId) return; try { await raceService.completeRace(endRaceModalRaceId); await retry(); setEndRaceModalRaceId(null); } catch (err) { alert(err instanceof Error ? err.message : 'Failed to complete race'); } }; const handleEndRaceCancel = () => { setEndRaceModalRaceId(null); }; return ( {(leagueData) => ( <> {/* End Race Modal */} {endRaceModalRaceId && leagueData && (() => { const race = leagueData.runningRaces.find(r => r.id === endRaceModalRaceId); return race ? ( ) : null; })()} )} ); }