import React, { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; interface ChatHistoryItem { id: number; chat: string; created_at: string; } const ChatHistory: React.FC = () => { const [history, setHistory] = useState([]); const [error, setError] = useState(null); const navigate = useNavigate(); useEffect(() => { const storedUser = localStorage.getItem('user'); if (storedUser) { const user = JSON.parse(storedUser); const email = user.email; fetch(`http://localhost:5000/api/chat_history?email=${encodeURIComponent(email)}`) .then((res) => res.json()) .then((data) => { if (data.error) { setError(data.error); } else { setHistory(data.history); } }) .catch(() => setError('Error fetching chat history')); } else { setError('User not logged in'); } }, []); // При клике перенаправляем пользователя на /dashboard/chat/{chatId} const handleClick = (item: ChatHistoryItem) => { navigate(`/dashboard/chat/${item.id}`, { state: { selectedChat: item } }); }; return (

Chat History

{error &&

{error}

} {history.length === 0 && !error ? (

No chat history found.

) : (
    {history.map((item) => { // Извлекаем первую строку из сохранённого чата. // Предполагаем, что чат хранится в формате: "User: <вопрос>\nBot: <ответ>\n..." const lines = item.chat.split("\n"); let firstUserMessage = lines[0]; if (firstUserMessage.startsWith("User:")) { firstUserMessage = firstUserMessage.replace("User:", "").trim(); } return (
  • handleClick(item)} >
    {firstUserMessage}
    {new Date(item.created_at).toLocaleString()}
  • ); })}
)}
); }; export default ChatHistory;