'use client'; import { useState, useEffect } from 'react'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import { getDriverRepository } from '@/lib/di-container'; import { EntityMappers } from '@gridpilot/racing/application/mappers/EntityMappers'; import type { DriverDTO } from '@gridpilot/racing/application/dto/DriverDTO'; import { Team, TeamJoinRequest, getTeamJoinRequests, approveTeamJoinRequest, rejectTeamJoinRequest, updateTeam, } from '@/lib/racingLegacyFacade'; interface TeamAdminProps { team: Team; onUpdate: () => void; } export default function TeamAdmin({ team, onUpdate }: TeamAdminProps) { const [joinRequests, setJoinRequests] = useState([]); const [requestDrivers, setRequestDrivers] = useState>({}); const [loading, setLoading] = useState(true); const [editMode, setEditMode] = useState(false); const [editedTeam, setEditedTeam] = useState({ name: team.name, tag: team.tag, description: team.description, }); useEffect(() => { loadJoinRequests(); }, [team.id]); const loadJoinRequests = async () => { const requests = getTeamJoinRequests(team.id); setJoinRequests(requests); const driverRepo = getDriverRepository(); const allDrivers = await driverRepo.findAll(); const driverMap: Record = {}; for (const request of requests) { const driver = allDrivers.find(d => d.id === request.driverId); if (driver) { const dto = EntityMappers.toDriverDTO(driver); if (dto) { driverMap[request.driverId] = dto; } } } setRequestDrivers(driverMap); setLoading(false); }; const handleApprove = async (requestId: string) => { try { approveTeamJoinRequest(requestId); await loadJoinRequests(); onUpdate(); } catch (error) { alert(error instanceof Error ? error.message : 'Failed to approve request'); } }; const handleReject = async (requestId: string) => { try { rejectTeamJoinRequest(requestId); await loadJoinRequests(); } catch (error) { alert(error instanceof Error ? error.message : 'Failed to reject request'); } }; const handleSaveChanges = () => { try { updateTeam(team.id, editedTeam, team.ownerId); setEditMode(false); onUpdate(); } catch (error) { alert(error instanceof Error ? error.message : 'Failed to update team'); } }; return (

Team Settings

{!editMode && ( )}
{editMode ? (
setEditedTeam({ ...editedTeam, name: e.target.value })} />
setEditedTeam({ ...editedTeam, tag: e.target.value })} maxLength={4} />

Max 4 characters