import React, { useState, useRef, useEffect } from 'react'; import { SendHorizontal, Plus } from 'lucide-react'; import Image from 'next/image'; import { fetchConversations, fetchMessages, sendMessage, markAsRead, } from '@/app/actions/messagerieAction'; export default function Chat({ userProfileId, establishmentId, discussions: discussionsProp, setDiscussions: setDiscussionsProp, onCreateDiscussion, onShowCreateDiscussion, }) { const [discussions, setDiscussions] = useState(discussionsProp || []); const [selectedDiscussion, setSelectedDiscussion] = useState(null); const [messages, setMessages] = useState([]); const [newMessage, setNewMessage] = useState(''); const messagesEndRef = useRef(null); useEffect(() => { if (userProfileId) { fetchConversations(userProfileId).then(setDiscussions); } }, [userProfileId]); useEffect(() => { if (selectedDiscussion) { fetchMessages(selectedDiscussion.conversation_id).then(setMessages); // Marquer comme lu markAsRead(selectedDiscussion.conversation_id, userProfileId); } }, [selectedDiscussion, userProfileId]); const handleSendMessage = async () => { if (newMessage.trim() && selectedDiscussion) { await sendMessage({ conversation_id: selectedDiscussion.conversation_id, emetteur: userProfileId, destinataire: selectedDiscussion.interlocuteur.id, corpus: newMessage, objet: '', }); setNewMessage(''); fetchMessages(selectedDiscussion.conversation_id).then(setMessages); fetchConversations(userProfileId).then(setDiscussions); } }; const handleKeyPress = (event) => { if (event.key === 'Enter') { handleSendMessage(); } }; return (
{discussion.name}
{discussion.lastMessage}
Aucune discussion disponible.
)}{message.corpus}
{message.date && new Date(message.date).toLocaleTimeString()}