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} + /> + )) )}