From 11ba5fc28e958c191209b6a09aefaab110cfbccb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com>
Date: Tue, 7 Nov 2023 19:15:41 -0600
Subject: [PATCH] feat: more robust deleted player handling
---
src/app/tools/ratings/page.tsx | 90 +++++++++++++++++++---------------
1 file changed, 50 insertions(+), 40 deletions(-)
diff --git a/src/app/tools/ratings/page.tsx b/src/app/tools/ratings/page.tsx
index cfee3da4d..4738d928c 100644
--- a/src/app/tools/ratings/page.tsx
+++ b/src/app/tools/ratings/page.tsx
@@ -74,30 +74,31 @@ export default function Page() {
);
const players = useSWR(`ratings-players-${region}-${season}`, async () => {
if (season === null) {
- // const players = await getRatingsLeague(region, 0);
- // useUsernameCache.setState(
- // produce((draft: UsernameCache) => {
- // players.result.forEach((player) => {
- // draft[region][player.spa_id] = player.nickname;
- // });
- // }),
- // );
- // useClanCache.setState(
- // produce((draft: ClanCache) => {
- // players.result.forEach((player) => {
- // draft[region][player.spa_id] = player.clan_tag;
- // });
- // }),
- // );
- // return players.result.map(
- // (player) =>
- // ({
- // id: player.spa_id,
- // score: player.score,
- // }) satisfies BlitzkriegRatingsLeaderboardEntry,
- // );
+ const players = await getRatingsLeague(region, 0);
+ useUsernameCache.setState(
+ produce((draft: UsernameCache) => {
+ players.result.forEach((player) => {
+ draft[region][player.spa_id] = player.nickname;
+ });
+ }),
+ );
+ useClanCache.setState(
+ produce((draft: ClanCache) => {
+ players.result.forEach((player) => {
+ draft[region][player.spa_id] = player.clan_tag;
+ });
+ }),
+ );
- return {};
+ return {
+ ...players.result.map(
+ (player) =>
+ ({
+ id: player.spa_id,
+ score: player.score,
+ }) satisfies BlitzkriegRatingsLeaderboardEntry,
+ ),
+ };
} else {
return {
...(await getArchivedRatingsLeaderboard(region, season)),
@@ -593,24 +594,33 @@ export default function Page() {
{players.isLoading ? (
) : (
- range(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
- .filter((index) => index in players.data!)
- .map((index) => (
- (
+
- ))
+ : usernameCache[region][players.data![index].id] ??
+ 'Loading player...'
+ : `Loading player...`
+ }
+ position={index + 1}
+ score={players.data![index]?.score ?? 0}
+ clan={
+ players.data![index]
+ ? clanCache[region][players.data![index].id]
+ : undefined
+ }
+ key={index}
+ highlight={highlightedPlayerId === players.data![index]?.id}
+ />
+ ))
)}