import React, { useState } from "react"; import { Container, Paper, TextField, IconButton, List, ListItem, ListItemText, Typography, Box, } from "@mui/material"; import SendIcon from "@mui/icons-material/Send"; import VolumeUpIcon from "@mui/icons-material/VolumeUp"; import axios from "axios"; function App() { const [messages, setMessages] = useState([]); const [input, setInput] = useState(""); const [isLoading, setIsLoading] = useState(false); const handleSend = async () => { if (!input.trim()) return; const newMessage = { role: "user", content: input }; setMessages([...messages, newMessage]); setInput(""); setIsLoading(true); try { const response = await axios.post("http://localhost:8000/chat", { messages: [...messages, newMessage], }); const assistantMessage = { role: "assistant", content: response.data.text, audio: response.data.audio, }; setMessages((prev) => [...prev, assistantMessage]); } catch (error) { console.error("Error:", error); } finally { setIsLoading(false); } }; const playAudio = (audioData) => { const audio = new Audio(`data:audio/mpeg;base64,${audioData}`); audio.play(); }; return ( Chat avec IA {messages.map((message, index) => ( {message.audio && ( playAudio(message.audio)} sx={{ mt: 1 }} > )} ))} setInput(e.target.value)} onKeyPress={(e) => e.key === "Enter" && handleSend()} disabled={isLoading} InputProps={{ endAdornment: ( ), }} /> ); } export default App;