From bad0c9ad822f96413cd1ac7a918b5e930245ad98 Mon Sep 17 00:00:00 2001 From: FifthWit Date: Thu, 30 Jan 2025 10:39:41 -0600 Subject: missing useEffect dependancies --- frontend/src/components/Leaderboards.tsx | 289 ++++++++++++++++++++++--------- 1 file changed, 203 insertions(+), 86 deletions(-) (limited to 'frontend/src/components') diff --git a/frontend/src/components/Leaderboards.tsx b/frontend/src/components/Leaderboards.tsx index fb614fa..05f01d0 100644 --- a/frontend/src/components/Leaderboards.tsx +++ b/frontend/src/components/Leaderboards.tsx @@ -1,15 +1,15 @@ -import React from 'react'; -import { Link, useNavigate } from 'react-router-dom'; +import React 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 { 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" +import "@css/Maps.css"; interface LeaderboardsProps { - mapID: string; + mapID: string; } const Leaderboards: React.FC = ({ mapID }) => { @@ -18,108 +18,225 @@ const Leaderboards: React.FC = ({ mapID }) => { const [pageNumber, setPageNumber] = React.useState(1); const _fetch_map_leaderboards = async () => { - const mapLeaderboards = await API.get_map_leaderboard(mapID, pageNumber.toString()); + const mapLeaderboards = await API.get_map_leaderboard( + mapID, + pageNumber.toString() + ); setData(mapLeaderboards); }; const { message, MessageDialogComponent } = useMessage(); React.useEffect(() => { - _fetch_map_leaderboards(); - console.log(data); - }, [pageNumber, navigate]) + _fetch_map_leaderboards(); + console.log(data); + }, [pageNumber, navigate, _fetch_map_leaderboards, data]); if (!data) { return ( -
-

Map is not available for competitive boards.

+
+

+ 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} - +
+ {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" ? ( - - - - +
+
+ {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)} - ) : r.kind === "singleplayer" && ( - - - - + + {time_ago( + new Date(r.record_date.replace("T", " ").replace("Z", "")) + )} - )} - - ))} -
-
-
+ + {r.kind === "multiplayer" ? ( + + + + + + ) : ( + r.kind === "singleplayer" && ( + + + + + ) + )} + + ))} + +
+ ); }; -- cgit v1.2.3