import React, { useState, useEffect } from 'react' import { chatAPI } from '../api' import '../styles/chat.css' export default function Chat({ conversationId }) { const [conversations, setConversations] = useState([]) const [selectedConversation, setSelectedConversation] = useState(conversationId || null) const [messages, setMessages] = useState([]) const [newMessage, setNewMessage] = useState('') const [isLoading, setIsLoading] = useState(true) const [error, setError] = useState('') const [isSending, setIsSending] = useState(false) const currentUserId = localStorage.getItem('user_id') useEffect(() => { loadConversations() }, []) useEffect(() => { if (selectedConversation) { loadMessages() // Poll for new messages every 2 seconds const interval = setInterval(loadMessages, 2000) return () => clearInterval(interval) } }, [selectedConversation]) const loadConversations = async () => { try { setIsLoading(true) const response = await chatAPI.getConversations() setConversations(response.data || []) } catch (err) { setError('Failed to load conversations') } finally { setIsLoading(false) } } const loadMessages = async () => { if (!selectedConversation) return try { const response = await chatAPI.getMessages(selectedConversation) setMessages(response.data || []) } catch (err) { setError('Failed to load messages') } } const handleSendMessage = async (e) => { e.preventDefault() if (!newMessage.trim() || !selectedConversation) return setIsSending(true) try { const response = await chatAPI.sendMessage(selectedConversation, newMessage) setMessages((prev) => [...prev, response.data]) setNewMessage('') } catch (err) { setError('Failed to send message') } finally { setIsSending(false) } } if (isLoading) { return
{conv.latest_message || 'No messages yet'}
{msg.content}
{new Date(msg.created_at).toLocaleTimeString()}