diff --git a/src/routes/match/[id]/chat/+page.svelte b/src/routes/match/[id]/chat/+page.svelte index f2eeea8..1f23013 100644 --- a/src/routes/match/[id]/chat/+page.svelte +++ b/src/routes/match/[id]/chat/+page.svelte @@ -18,7 +18,7 @@ let searchQuery = $state(''); let showTeamChat = $state(true); let showAllChat = $state(true); - let selectedPlayer = $state(null); + let selectedPlayer = $state(null); // Check if text likely needs translation (contains non-ASCII or Cyrillic characters) const mightNeedTranslation = (text: string): boolean => { @@ -34,16 +34,15 @@ window.open(translateUrl, '_blank', 'width=800,height=600,noopener,noreferrer'); }; - // Get unique players who sent messages + // Get unique players who sent messages (using player_name to avoid precision loss with player_id) const messagePlayers = $derived( chatData - ? Array.from(new Set(chatData.messages.map((m) => m.player_id))) - .filter((playerId): playerId is number => playerId !== undefined) - .map((playerId) => { - const player = match.players?.find((p) => p.id === String(playerId)); + ? Array.from(new Set(chatData.messages.map((m) => m.player_name || `Player ${m.player_id}`))) + .filter((name): name is string => !!name) + .map((name) => { + const player = match.players?.find((p) => p.name === name); return { - id: playerId, - name: player?.name || `Player ${playerId}`, + name, team_id: player?.team_id || 0 }; }) @@ -56,7 +55,8 @@ ? chatData.messages.filter((msg) => { if (!showTeamChat && !msg.all_chat) return false; if (!showAllChat && msg.all_chat) return false; - if (selectedPlayer !== null && msg.player_id !== selectedPlayer) return false; + const msgPlayerName = msg.player_name || `Player ${msg.player_id}`; + if (selectedPlayer !== null && msgPlayerName !== selectedPlayer) return false; if (searchQuery && !msg.message.toLowerCase().includes(searchQuery.toLowerCase())) { return false; } @@ -204,7 +204,7 @@ > {#each messagePlayers as player} - + {/each} @@ -256,9 +256,8 @@
{#each messagesByRound[round] as message} - {@const player = match.players?.find((p) => p.id === String(message.player_id))} - {@const playerName = - message.player_name || player?.name || `Player ${message.player_id}`} + {@const playerName = message.player_name || `Player ${message.player_id}`} + {@const player = match.players?.find((p) => p.name === playerName)} {@const playerAvatar = player?.avatar} {@const teamId = player?.team_id || 0}
diff --git a/src/routes/player/[id]/+page.svelte b/src/routes/player/[id]/+page.svelte index 676a597..b2cc0a2 100644 --- a/src/routes/player/[id]/+page.svelte +++ b/src/routes/player/[id]/+page.svelte @@ -1125,6 +1125,11 @@
{#each metaStats.best_mates.slice(0, 5) as teammate} {@const winRatePercent = (teammate.win_rate ?? 0) * 100} + {@const avatarUrl = teammate.player.avatar + ? teammate.player.avatar.startsWith('http') + ? teammate.player.avatar + : `https://avatars.steamstatic.com/${teammate.player.avatar}_full.jpg` + : null} - {#if teammate.player.avatar} + {#if avatarUrl} {teammate.player.name { @@ -1190,6 +1195,11 @@