import { useState } from "react"; import Header from "@/components/Header"; import InstanceList from "@/components/InstanceList"; import InstanceDialog from "@/components/InstanceDialog"; import LoginDialog from "@/components/LoginDialog"; import SystemInfoDialog from "./components/SystemInfoDialog"; import { type CreateInstanceOptions, type Instance } from "@/types/instance"; import { useInstances } from "@/contexts/InstancesContext"; import { useAuth } from "@/contexts/AuthContext"; import { ThemeProvider } from "@/contexts/ThemeContext"; import { Toaster } from "sonner"; function App() { const { isAuthenticated, isLoading: authLoading } = useAuth(); const [isInstanceModalOpen, setIsInstanceModalOpen] = useState(false); const [isSystemInfoModalOpen, setIsSystemInfoModalOpen] = useState(false); const [editingInstance, setEditingInstance] = useState( undefined ); const { createInstance, updateInstance } = useInstances(); const handleCreateInstance = () => { setEditingInstance(undefined); setIsInstanceModalOpen(true); }; const handleEditInstance = (instance: Instance) => { setEditingInstance(instance); setIsInstanceModalOpen(true); }; const handleSaveInstance = (name: string, options: CreateInstanceOptions) => { if (editingInstance) { void updateInstance(editingInstance.name, options); } else { void createInstance(name, options); } }; const handleShowSystemInfo = () => { setIsSystemInfoModalOpen(true); }; // Show loading spinner while checking auth if (authLoading) { return (

Loading...

); } // Show login dialog if not authenticated if (!isAuthenticated) { return (
); } // Show main app if authenticated return (
); } export default App;