import React, { useCallback } from "react"; import { Link, useNavigate } from "react-router-dom"; import { DownloadIcon, ThreedotIcon } from "@images/Images"; import { MapLeaderboard } from "@customTypes/Map"; import { ticks_to_time, time_ago } from "@utils/Time"; import { API } from "@api/Api"; import useMessage from "@hooks/UseMessage"; import "@css/Maps.css"; interface LeaderboardsProps { mapID: string; } const Leaderboards: React.FC = ({ mapID }) => { const navigate = useNavigate(); const [data, setData] = React.useState(undefined); const [pageNumber, setPageNumber] = React.useState(1); const _fetch_map_leaderboards = useCallback(async () => { const mapLeaderboards = await API.get_map_leaderboard( mapID, pageNumber.toString() ); setData(mapLeaderboards); }, [mapID, pageNumber]); const { message, MessageDialogComponent } = useMessage(); React.useEffect(() => { _fetch_map_leaderboards(); console.log(data); }, [pageNumber, navigate, _fetch_map_leaderboards, data]); if (!data) { return (

Loading...

); } if (data.records.length === 0) { return (

No records found.

); } return (
{MessageDialogComponent}
Place {data.map.is_coop ? (
Blue Orange
) : ( Runner )} Portals Time Date
{data.pagination.current_page}/{data.pagination.total_pages}

{data.records.map((r, index) => ( {r.placement} {r.kind === "multiplayer" ? (
 {" "} {r.host.user_name}  {" "} {r.partner.user_name}
) : ( r.kind === "singleplayer" && (
 {" "} {r.user.user_name}
) )} {r.score_count} {ticks_to_time(r.score_time)} {time_ago( new Date(r.record_date.replace("T", " ").replace("Z", "")) )} {r.kind === "multiplayer" ? ( ) : ( r.kind === "singleplayer" && ( ) )}
))}
); }; export default Leaderboards;