import { client } from "@/util/api"; import { FlightConciseSchema } from "@/util/types"; import { NavLink, Text, Button, ScrollArea, Stack, Loader, Center, Divider, Badge, } from "@mantine/core"; import { Link, useLocation, useNavigate } from "@remix-run/react"; import { IconPlus } from "@tabler/icons-react"; import { UseQueryResult, useQuery } from "@tanstack/react-query"; function useFlights() { const flights = useQuery({ queryKey: ["flights-list"], queryFn: async () => { const res = await client.get(`/flights`); const groupedFlights: { [date: string]: FlightConciseSchema[] } = {}; res.data.map((log: FlightConciseSchema) => { const dateStr = log.date; if (!groupedFlights[dateStr]) { groupedFlights[dateStr] = []; } groupedFlights[dateStr].push(log); }); return groupedFlights; }, }); return flights; } function FlightsListDisplay({ flights, page, }: { flights: UseQueryResult<{ [date: string]: FlightConciseSchema[] }>; page: string; }) { return ( <> {flights.data ? ( Object.entries(flights.data).map(([date, logs], index: number) => ( <> {date} {logs.map((flight: FlightConciseSchema) => ( {flight.aircraft} ) : null } active={page === flight.id} /> ))} )) ) : flights.isLoading ? (
) : (
No Flights
)} ); } export function FlightsList() { const location = useLocation(); const page = location.pathname.split("/")[3]; const flights = useFlights(); const navigate = useNavigate(); return ( ); } export function MobileFlightsList() { const location = useLocation(); const page = location.pathname.split("/")[3]; const flights = useFlights(); const navigate = useNavigate(); return ( ); } export default { FlightsList, MobileFlightsList };