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 (

Map is not available for competitive boards.

); } 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;