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 (
}
mb="md"
onClick={() => navigate("/logbook/flights/new")}
>
Add
);
}
export function MobileFlightsList() {
const location = useLocation();
const page = location.pathname.split("/")[3];
const flights = useFlights();
const navigate = useNavigate();
return (
}
mt="md"
onClick={() => navigate("/logbook/flights/new")}
>
Add
);
}
export default { FlightsList, MobileFlightsList };