diff --git a/src/app/corne/corne-view.tsx b/src/app/corne/corne-view.tsx
index bebf4f2..bb2f09c 100644
--- a/src/app/corne/corne-view.tsx
+++ b/src/app/corne/corne-view.tsx
@@ -113,8 +113,12 @@ export function CorneView({
// (même leçon qu'Icare : une mise à jour Realtime pendant une partie ne
// doit jamais pouvoir perturber le jeu en cours).
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
- const podiumProfiles = ranked.filter((p) => p.rank <= 3);
- const rest = ranked.filter((p) => p.rank > 3);
+ // Tant que personne n'a marqué, tout le monde est à égalité à 0 et
+ // partagerait le rang 1 — pas de podium tant qu'il n'y a rien à
+ // départager, sinon tout le groupe se retrouverait sur la 1ère marche.
+ const hasScores = (ranked[0]?.best_score ?? 0) > 0;
+ const podiumProfiles = hasScores ? ranked.filter((p) => p.rank <= 3) : [];
+ const rest = hasScores ? ranked.filter((p) => p.rank > 3) : ranked;
return (
diff --git a/src/app/icare/icare-view.tsx b/src/app/icare/icare-view.tsx
index 491c7ac..2a552d1 100644
--- a/src/app/icare/icare-view.tsx
+++ b/src/app/icare/icare-view.tsx
@@ -122,8 +122,12 @@ export function IcareView({
// score d'un autre joueur qui change) redimensionnait le canvas et cassait
// la partie en cours.
const ranked = useMemo(() => computeRanksBy(leaderboard, (a, b) => b.best_score - a.best_score), [leaderboard]);
- const podiumProfiles = ranked.filter((p) => p.rank <= 3);
- const rest = ranked.filter((p) => p.rank > 3);
+ // Tant que personne n'a marqué, tout le monde est à égalité à 0 et
+ // partagerait le rang 1 — pas de podium tant qu'il n'y a rien à
+ // départager, sinon tout le groupe se retrouverait sur la 1ère marche.
+ const hasScores = (ranked[0]?.best_score ?? 0) > 0;
+ const podiumProfiles = hasScores ? ranked.filter((p) => p.rank <= 3) : [];
+ const rest = hasScores ? ranked.filter((p) => p.rank > 3) : ranked;
return (
diff --git a/src/app/leaderboard/leaderboard-view.tsx b/src/app/leaderboard/leaderboard-view.tsx
index bb5543f..cfe0075 100644
--- a/src/app/leaderboard/leaderboard-view.tsx
+++ b/src/app/leaderboard/leaderboard-view.tsx
@@ -86,7 +86,12 @@ export function LeaderboardView({
}, []);
const ranked = useMemo(() => computeRanks(profiles), [profiles]);
- const rest = ranked.filter((p) => p.rank > 3);
+ // Tant que personne n'a de gloires, tout le monde est à égalité à 0 et
+ // partagerait le rang 1 — pas de podium tant qu'il n'y a rien à
+ // départager, sinon tout le groupe se retrouverait sur la 1ère marche.
+ const hasScores = (ranked[0]?.points ?? 0) > 0;
+ const podiumProfiles = hasScores ? ranked.filter((p) => p.rank <= 3) : [];
+ const rest = hasScores ? ranked.filter((p) => p.rank > 3) : ranked;
if (profiles.length === 0) {
return
Personne n'est encore inscrit.
;
@@ -95,7 +100,7 @@ export function LeaderboardView({
return (
p.rank <= 3)}
+ profiles={podiumProfiles}
renderValue={(member) => member.points}
valueLabel="gloires"
isJudge={isJudge}