import { useRef } from 'react'; import { formatElapsed, useGameLog } from './useGameLog'; import './GameLog.css'; export interface GameLogProps { gameId: number | undefined; } function GameLog({ gameId }: GameLogProps) { const listRef = useRef(null); const { messages, players, displaySeconds, draft, setDraft, handleMessagesScroll, handleSubmit, } = useGameLog({ gameId, listRef }); return (
Log
{gameId != null && (
{formatElapsed(displaySeconds)}
)}
{messages.length === 0 && (
no messages
)} {messages.map((m, idx) => { const isEvent = m.kind === 'event'; const name = players?.[m.playerId]?.properties.userInfo?.name ?? `p${m.playerId}`; const lineClass = isEvent ? 'game-log__line game-log__line--event' : 'game-log__line'; return (
{!isEvent && {name}:} {m.message}
); })}
setDraft(e.target.value)} disabled={gameId == null} aria-label="game chat input" />
); } export default GameLog;