import { CircularProgress, List, ListItem, Box, useTheme, Pagination, } from "@mui/material"; import TicketCard from "./TicketCard"; import { setTicketApiPage, useTicketStore } from "@root/stores/tickets"; import { Ticket } from "@frontend/kitui"; interface Props { fetchState: "fetching" | "idle" | "all fetched"; } export default function TicketList({ fetchState }: Props) { const theme = useTheme(); const tickets = useTicketStore((state) => state.tickets); const ticketCount = useTicketStore((state) => state.ticketCount); const ticketApiPage = useTicketStore((state) => state.apiPage); const ticketsPerPage = useTicketStore((state) => state.ticketsPerPage); const sortedTickets = tickets .sort(sortTicketsByUpdateTime) .slice( ticketApiPage * ticketsPerPage, (ticketApiPage + 1) * ticketsPerPage ); return ( {sortedTickets.map((ticket) => ( ))} {fetchState === "fetching" && ( )} {ticketCount > ticketsPerPage && ( setTicketApiPage(value - 1)} sx={{ alignSelf: "center" }} /> )} ); } function sortTicketsByUpdateTime(ticket1: Ticket, ticket2: Ticket) { const date1 = new Date(ticket1.updated_at).getTime(); const date2 = new Date(ticket2.updated_at).getTime(); return date2 - date1; }