import { useEffect, useRef } from 'react'; import { useChatStore } from '@/stores/chat'; import { useAuthStore } from '@/features/auth/store/authStore'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { sanitizeChatMessage } from '@/utils/sanitize'; import { MoreVertical, Reply, Smile, ThumbsUp, ThumbsDown, MessageSquare, } from 'lucide-react'; export function ChatMessages() { const { currentConversation, messages, typingUsers } = useChatStore(); const { user } = useAuthStore(); const messagesEndRef = useRef(null); const conversationMessages = currentConversation ? messages[currentConversation.id] || [] : []; const typingUserIds = currentConversation ? typingUsers[currentConversation.id] || [] : []; useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [conversationMessages]); if (!currentConversation) { return (

Sélectionnez une conversation

Choisissez une conversation pour commencer à discuter

); } return (
{/* En-tête de la conversation */}

{currentConversation.name || `Conversation ${currentConversation.id.slice(0, 8)}`}

{currentConversation.participants.length} participant {currentConversation.participants.length > 1 ? 's' : ''}

{/* Messages */}
{conversationMessages.length === 0 ? (

Aucun message dans cette conversation

) : ( conversationMessages.map((message) => { const isOwn = message.sender_id === user?.id; return (
{isOwn ? 'Vous' : `Utilisateur ${message.sender_id}`} {new Date(message.created_at).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', })}

{/* Réactions */} {message.reactions && message.reactions.length > 0 && (

{message.reactions.map((reaction, index) => ( ))}
)}
{/* Actions sur le message */}
); }) )} {/* Indicateur de frappe */} {typingUserIds.length > 0 && (
{typingUserIds.length === 1 ? "Quelqu'un" : `${typingUserIds.length} personnes`}{' '} est en train d'écrire...
)}
); }