import { useQuery } from '@tanstack/react-query'; import { useInject } from '@/lib/di/hooks/useInject'; import { TEAM_SERVICE_TOKEN, DRIVER_SERVICE_TOKEN } from '@/lib/di/tokens'; import { enhanceQueryResult } from '@/lib/di/hooks/useReactQueryWithApiError'; import type { TeamMemberViewModel } from '@/lib/view-models/TeamMemberViewModel'; interface TeamRosterMember { driver: any; role: string; joinedAt: string; rating: number | null; overallRank: number | null; } export function useTeamRoster(memberships: TeamMemberViewModel[]) { const teamService = useInject(TEAM_SERVICE_TOKEN); const driverService = useInject(DRIVER_SERVICE_TOKEN); const queryResult = useQuery({ queryKey: ['teamRoster', memberships], queryFn: async () => { // Get driver details for each membership const membersWithDetails = await Promise.all( memberships.map(async (m) => { const driver = await driverService.findById(m.driverId); return { driver: driver || { id: m.driverId, name: 'Unknown Driver', country: 'Unknown', position: 'N/A', races: '0', impressions: '0', team: 'None' }, role: m.role, joinedAt: m.joinedAt, rating: null, // DriverDTO doesn't include rating overallRank: null, // DriverDTO doesn't include overallRank }; }) ); return membersWithDetails; }, enabled: memberships.length > 0, }); return enhanceQueryResult(queryResult); }