import React, { useState, useEffect } from 'react'; import type { Session } from '@supabase/supabase-js'; import { supabase, isSupabaseConfigured } from './services/supabaseClient'; import Loader from './components/Loader'; import AppHeader from './components/AppHeader'; import Statistics from './components/Statistics'; import EssayChecker from './components/EssayChecker'; import Dashboard from './components/Dashboard'; import TasksTab from './components/TasksTab'; import Auth from './components/Auth'; export type ViewState = 'checker' | 'stats' | 'dashboard' | 'tasks' | 'auth'; const App: React.FC = () => { const [session, setSession] = useState(null); const [loading, setLoading] = useState(true); const [view, setView] = useState('checker'); const handleSignOut = async () => { if (isSupabaseConfigured()) { await supabase.auth.signOut(); } setSession(null); setView('checker'); }; useEffect(() => { if (isSupabaseConfigured()) { supabase.auth.getSession().then(({ data }) => { setSession(data?.session ?? null); setLoading(false); }); const { data: { subscription } } = supabase.auth.onAuthStateChange((_event, session) => { setSession(session); }); return () => subscription.unsubscribe(); } else { setLoading(false); } }, []); if (loading) { return
; } return (
{(() => { switch (view) { case 'stats': return ; case 'dashboard': return ; case 'tasks': return ; case 'auth': return ; case 'checker': default: return ; } })()}
); }; export default App;