import React, { useEffect, useState } from "react"; import NavBar from "../components/NavBar"; import ChatWindow from "../components/ChatWindow"; const POLL_INTERVAL = 500; // 0.5 seconds export default function App() { const [conversation, setConversation] = useState([]); const [userInput, setUserInput] = useState(""); const [loading, setLoading] = useState(false); const [done, setDone] = useState(true); // New `done` state useEffect(() => { // Poll /get-conversation-history every 0.5 seconds const intervalId = setInterval(async () => { try { const res = await fetch("http://127.0.0.1:8000/get-conversation-history"); if (res.ok) { const data = await res.json(); // Update conversation setConversation(data.messages || []); if (data.messages && data.messages.length > 0) { const lastMessage = data.messages[data.messages.length - 1]; setLoading(lastMessage.actor !== "agent"); setDone(lastMessage.response.next === "done"); } else { setLoading(false); setDone(true); // Default to `done` if no messages } } } catch (err) { console.error("Error fetching conversation history:", err); } }, POLL_INTERVAL); return () => clearInterval(intervalId); }, []); const handleSendMessage = async () => { if (!userInput.trim()) return; try { setLoading(true); // Mark as loading await fetch( `http://127.0.0.1:8000/send-prompt?prompt=${encodeURIComponent(userInput)}`, { method: "POST" } ); setUserInput(""); } catch (err) { console.error("Error sending prompt:", err); setLoading(false); } }; const handleConfirm = async () => { try { setLoading(true); await fetch("http://127.0.0.1:8000/confirm", { method: "POST" }); } catch (err) { console.error("Confirm error:", err); setLoading(false); } }; const handleStartNewChat = async () => { try { await fetch( `http://127.0.0.1:8000/send-prompt?prompt=${encodeURIComponent("I'd like to travel for an event.")}`, { method: "POST" } ); setConversation([]); // Clear local state } catch (err) { console.error("Error ending chat:", err); } }; const handleKeyPress = (e) => { if (e.key === "Enter") { handleSendMessage(); } }; return (