mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 11:39:50 +02:00
feat: more robust deleted player handling
This commit is contained in:
1 parent
fbde9ec64f
commit
11ba5fc28e
1 file changed
+45
-35
@@ -74,30 +74,31 @@ export default function Page() {
|
|||||||
);
|
);
|
||||||
const players = useSWR(`ratings-players-${region}-${season}`, async () => {
|
const players = useSWR(`ratings-players-${region}-${season}`, async () => {
|
||||||
if (season === null) {
|
if (season === null) {
|
||||||
// const players = await getRatingsLeague(region, 0);
|
const players = await getRatingsLeague(region, 0);
|
||||||
// useUsernameCache.setState(
|
useUsernameCache.setState(
|
||||||
// produce((draft: UsernameCache) => {
|
produce((draft: UsernameCache) => {
|
||||||
// players.result.forEach((player) => {
|
players.result.forEach((player) => {
|
||||||
// draft[region][player.spa_id] = player.nickname;
|
draft[region][player.spa_id] = player.nickname;
|
||||||
// });
|
});
|
||||||
// }),
|
}),
|
||||||
// );
|
);
|
||||||
// useClanCache.setState(
|
useClanCache.setState(
|
||||||
// produce((draft: ClanCache) => {
|
produce((draft: ClanCache) => {
|
||||||
// players.result.forEach((player) => {
|
players.result.forEach((player) => {
|
||||||
// draft[region][player.spa_id] = player.clan_tag;
|
draft[region][player.spa_id] = player.clan_tag;
|
||||||
// });
|
});
|
||||||
// }),
|
}),
|
||||||
// );
|
);
|
||||||
// return players.result.map(
|
|
||||||
// (player) =>
|
|
||||||
// ({
|
|
||||||
// id: player.spa_id,
|
|
||||||
// score: player.score,
|
|
||||||
// }) satisfies BlitzkriegRatingsLeaderboardEntry,
|
|
||||||
// );
|
|
||||||
|
|
||||||
return {};
|
return {
|
||||||
|
...players.result.map(
|
||||||
|
(player) =>
|
||||||
|
({
|
||||||
|
id: player.spa_id,
|
||||||
|
score: player.score,
|
||||||
|
}) satisfies BlitzkriegRatingsLeaderboardEntry,
|
||||||
|
),
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
...(await getArchivedRatingsLeaderboard(region, season)),
|
...(await getArchivedRatingsLeaderboard(region, season)),
|
||||||
@@ -593,22 +594,31 @@ export default function Page() {
|
|||||||
{players.isLoading ? (
|
{players.isLoading ? (
|
||||||
<Leaderboard.Gap message="Loading players..." />
|
<Leaderboard.Gap message="Loading players..." />
|
||||||
) : (
|
) : (
|
||||||
range(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
|
range(
|
||||||
.filter((index) => index in players.data!)
|
page * rowsPerPage,
|
||||||
.map((index) => (
|
Math.min(
|
||||||
|
page * rowsPerPage + rowsPerPage,
|
||||||
|
ratingsInfo?.detail ? 0 : (ratingsInfo?.count ?? 1) - 1,
|
||||||
|
),
|
||||||
|
).map((index) => (
|
||||||
<Leaderboard.Item
|
<Leaderboard.Item
|
||||||
nickname={
|
nickname={
|
||||||
usernameCache[region][players.data![index].id] === null
|
index in players.data!
|
||||||
|
? usernameCache[region][players.data![index].id] === null
|
||||||
? `Deleted player ${players.data![index].id}`
|
? `Deleted player ${players.data![index].id}`
|
||||||
: usernameCache[region][players.data![index].id]
|
: usernameCache[region][players.data![index].id] ??
|
||||||
? usernameCache[region][players.data![index].id]!
|
'Loading player...'
|
||||||
: `Loading player ${players.data![index].id}...`
|
: `Loading player...`
|
||||||
}
|
}
|
||||||
position={page * rowsPerPage + index + 1}
|
position={index + 1}
|
||||||
score={players.data![index].score}
|
score={players.data![index]?.score ?? 0}
|
||||||
clan={clanCache[region][players.data![index].id]}
|
clan={
|
||||||
key={players.data![index].id}
|
players.data![index]
|
||||||
highlight={highlightedPlayerId === players.data![index].id}
|
? clanCache[region][players.data![index].id]
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
|
key={index}
|
||||||
|
highlight={highlightedPlayerId === players.data![index]?.id}
|
||||||
/>
|
/>
|
||||||
))
|
))
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in new issue
Block a user