import { useState, useEffect } from "react"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import { Navbar } from "@/components/layout/navbar"; import { Projects } from "@/pages/projects"; import { ProjectTasks } from "@/pages/project-tasks"; import { TaskDetailsPage } from "@/pages/task-details"; import { TaskAttemptComparePage } from "@/pages/task-attempt-compare"; import { Settings } from "@/pages/Settings"; import { DisclaimerDialog } from "@/components/DisclaimerDialog"; import type { Config, ApiResponse } from "shared/types"; function AppContent() { const [config, setConfig] = useState(null); const [loading, setLoading] = useState(true); const [showDisclaimer, setShowDisclaimer] = useState(false); const showNavbar = true; useEffect(() => { const loadConfig = async () => { try { const response = await fetch("/api/config"); const data: ApiResponse = await response.json(); if (data.success && data.data) { setConfig(data.data); setShowDisclaimer(!data.data.disclaimer_acknowledged); } } catch (err) { console.error("Error loading config:", err); } finally { setLoading(false); } }; loadConfig(); }, []); const handleDisclaimerAccept = async () => { if (!config) return; const updatedConfig = { ...config, disclaimer_acknowledged: true }; try { const response = await fetch("/api/config", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(updatedConfig), }); const data: ApiResponse = await response.json(); if (data.success) { setConfig(updatedConfig); setShowDisclaimer(false); } } catch (err) { console.error("Error saving config:", err); } }; if (loading) { return (

Loading...

); } return (
{showNavbar && }
} /> } /> } /> } /> } /> } /> } />
); } function App() { return ( ); } export default App;