diff --git a/src/lib/Kickable.svelte b/src/lib/KickablePlayerLabel.svelte
similarity index 54%
rename from src/lib/Kickable.svelte
rename to src/lib/KickablePlayerLabel.svelte
index 19c3f45..f15bd75 100644
--- a/src/lib/Kickable.svelte
+++ b/src/lib/KickablePlayerLabel.svelte
@@ -1,5 +1,10 @@
-
+{#if allowKicking && player.id !== currentUserId && !player.isHost}
+
+{:else}
+
+{/if}
diff --git a/src/lib/PlayerLabel.svelte b/src/lib/PlayerLabel.svelte
new file mode 100644
index 0000000..1bd1ea7
--- /dev/null
+++ b/src/lib/PlayerLabel.svelte
@@ -0,0 +1,52 @@
+
+
+
diff --git a/src/routes/game/[gameId=id]/leaderboard/+page.server.ts b/src/routes/game/[gameId=id]/leaderboard/+page.server.ts
index b1ee204..a499d6d 100644
--- a/src/routes/game/[gameId=id]/leaderboard/+page.server.ts
+++ b/src/routes/game/[gameId=id]/leaderboard/+page.server.ts
@@ -13,7 +13,7 @@ export const load = async ({ params, locals }) => {
players: {
where: { kicked: false },
select: {
- user: { select: { id: true, name: true } },
+ user: { select: { id: true, name: true, picture: true } },
points: true,
isHost: true,
},
@@ -32,11 +32,11 @@ export const load = async ({ params, locals }) => {
isHost: ret.isHost,
players: ret.game.players.map((player) => {
return {
- points: player.points,
+ ...player,
+ ...player.user,
kickable: ret.isHost
? !player.isHost && player.user.id != locals.user.id
: undefined,
- ...player.user,
};
}),
};
diff --git a/src/routes/game/[gameId=id]/leaderboard/+page.svelte b/src/routes/game/[gameId=id]/leaderboard/+page.svelte
index 95e75c8..711ad42 100644
--- a/src/routes/game/[gameId=id]/leaderboard/+page.svelte
+++ b/src/routes/game/[gameId=id]/leaderboard/+page.svelte
@@ -3,20 +3,16 @@
import { getChannel } from "$lib/ably-client";
import { page } from "$app/stores";
import "$lib/button.css";
- import getDisplayName from "$lib/get-display-name";
- import type { LeaderboardPlayer } from "$lib/types";
+ import type { PlayerLabelProps } from "$lib/types";
export let data;
let players = data.players.reduce(
(acc, player) => {
- acc[player.id] = {
- ...player,
- name: getDisplayName(player),
- };
+ acc[player.id] = player;
return acc;
},
- {} as { [key: number]: LeaderboardPlayer },
+ {} as { [key: number]: PlayerLabelProps & { points: number } },
);
$: orderedPlayers = Object.values(players).sort(
(a, b) => b.points - a.points,
@@ -31,9 +27,8 @@
case "create":
players[$pointsMessage.data.userId] = {
id: $pointsMessage.data.userId,
- name: getDisplayName($pointsMessage.data),
+ ...$pointsMessage.data,
points: 0,
- kickable: data.isHost,
};
}
}
@@ -51,7 +46,7 @@
{#if data.isHost}
End game{/if}
diff --git a/src/routes/game/[gameId=id]/lobby/+page.svelte b/src/routes/game/[gameId=id]/lobby/+page.svelte
index 2c509dc..ca37981 100644
--- a/src/routes/game/[gameId=id]/lobby/+page.svelte
+++ b/src/routes/game/[gameId=id]/lobby/+page.svelte
@@ -1,27 +1,21 @@