'use client'; import { useState, useEffect } from 'react'; import { getDriverRepository } from '@/lib/di-container'; import { Driver } from '@gridpilot/racing/domain/entities/Driver'; import { EntityMappers } from '@gridpilot/racing/application/mappers/EntityMappers'; import type { DriverDTO } from '@gridpilot/racing/application/dto/DriverDTO'; import CreateDriverForm from '@/components/drivers/CreateDriverForm'; import Card from '@/components/ui/Card'; import DriverProfile from '@/components/drivers/DriverProfile'; import ProfileRaceHistory from '@/components/drivers/ProfileRaceHistory'; import ProfileSettings from '@/components/drivers/ProfileSettings'; import { useEffectiveDriverId } from '@/lib/currentDriver'; export default function ProfilePage() { const [driver, setDriver] = useState(null); const [loading, setLoading] = useState(true); const effectiveDriverId = useEffectiveDriverId(); useEffect(() => { const loadDriver = async () => { const driverRepo = getDriverRepository(); const currentDriverId = effectiveDriverId; const currentDriver = await driverRepo.findById(currentDriverId); const driverData = EntityMappers.toDriverDTO(currentDriver); setDriver(driverData); setLoading(false); }; void loadDriver(); }, [effectiveDriverId]); const handleSaveSettings = async (updates: Partial) => { if (!driver) return; const driverRepo = getDriverRepository(); const drivers = await driverRepo.findAll(); const currentDriver = drivers[0]; if (currentDriver) { const updatedDriver: Driver = currentDriver.update({ bio: updates.bio ?? currentDriver.bio, country: updates.country ?? currentDriver.country, }); const persistedDriver = await driverRepo.update(updatedDriver); const updatedDto = EntityMappers.toDriverDTO(persistedDriver); setDriver(updatedDto); } }; if (loading) { return (
Loading profile...
); } if (!driver) { return (

Driver Profile

Create your GridPilot profile to get started

Create Your Profile

Create your driver profile. Alpha data resets on reload, so test freely.

); } return (
); }