import { useState, useEffect } from 'react'
import AuthPage from './pages/AuthPage'
import DashboardPage from './pages/DashboardPage'
import { useLanguage } from './contexts/LanguageContext'
export type Page = 'auth' | 'dashboard'
function BootScreen({ loadingText }: { loadingText: string }) {
return (
CA
Copilot API
{loadingText}
)
}
export default function App() {
const [page, setPage] = useState(null)
const [username, setUsername] = useState('')
const [port, setPort] = useState(4141)
const { setLangPref, t } = useLanguage()
useEffect(() => {
let active = true
const bootstrap = async () => {
try {
const [authResult, settings] = await Promise.all([
window.electronAPI.checkSavedToken(),
window.electronAPI.getSettings(),
])
if (!active) return
setPort(settings.lastPort)
setLangPref(settings.language ?? 'auto')
if (authResult.success && authResult.username) {
setUsername(authResult.username)
setPage('dashboard')
return
}
setPage('auth')
} catch {
if (active) setPage('auth')
}
}
void bootstrap()
return () => {
active = false
}
}, [])
const handleAuthSuccess = (user: string) => {
setUsername(user)
setPage('dashboard')
}
const handleLogout = async () => {
await window.electronAPI.logout()
setUsername('')
setPage('auth')
}
if (page === null) {
return
}
if (page === 'auth') {
return
}
return (
)
}