import { useEffect, useRef } from 'react' import { useAuth } from '../context/AuthContext' import { senderColorIndex } from '../lib/messageGrouping' import type { ChatMessageEnvelope, Message, RoomMember } from '../types' import { UserAvatar } from './UserAvatar' import './MessageList.css' interface MessageListProps { messages: (Message | ChatMessageEnvelope)[] members: RoomMember[] } export function MessageList({ messages, members }: MessageListProps) { const { user } = useAuth() const bottomRef = useRef(null) useEffect(() => { bottomRef.current?.scrollIntoView({ block: 'end' }) }, [messages.length]) return (
{messages.map((msg, i) => { const mine = msg.user_id === user?.id const prev = messages[i - 1] const showAvatar = !mine && (!prev || prev.user_id !== msg.user_id) const showName = showAvatar return (
{!mine && (
{showAvatar && ( )}
)}
{showName &&
{msg.username}
}
{msg.content}
{new Date(msg.created_at).toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })}
) })}
) }