diff --git a/src/App.tsx b/src/App.tsx index d124401..15a3be5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,32 @@ import './App.css' +import api,{ type Driver } from './api/api' +import { useEffect, useState } from "react"; function App() { + const { getAllDrivers } = api() + const [drivers, setDrivers] = useState([]) + + useEffect(() => { + async function loadDrivers() { + const allDrivers = await getAllDrivers() + setDrivers(allDrivers) + console.log(allDrivers) + } + loadDrivers() + }, []) return ( <>

WEB

+ + {drivers.map((driver) => ( +
+

{driver.full_name}

+ +
+ + ))} + ) } diff --git a/src/api/api.tsx b/src/api/api.tsx new file mode 100644 index 0000000..8736f99 --- /dev/null +++ b/src/api/api.tsx @@ -0,0 +1,32 @@ + +export interface Driver { + broadcast_name: string; + driver_number: number; + first_name : string, + last_name : string, + full_name: string; + headshot_url: string; + meeting_key: number; + name_acronym : string; + session_key: number; + team_colour: string; + team_name: string; + } + +export default function api(){ + const API = "https://api.openf1.org/v1" + + + async function getAllDrivers(){ + const result = await fetch(`${API}/drivers?session_key=latest`); + if (!result.ok) { throw new Error("Failed to fetch drivers");} + const drivers: Driver[] = await result.json(); + return drivers + } + + return { + + getAllDrivers, + + }; +} \ No newline at end of file