// static/js/app.jsx

function App() {
    const [token, setToken] = useState(localStorage.getItem('token'));
    const [user, setUser] = useState(null);
    const [view, setView] = useState('login');

    const isAdminOrManager = (role) => role === 'admin' || role === 'manager';

    useEffect(() => {
        if (!token) return;

        (async () => {
            try {
                // --- ТЕПЕРЬ ЧЕРЕЗ API-СЛОЙ ---
                const data = await API.getCurrentUser(token);
                setUser(data);
                setView(isAdminOrManager(data.role) ? 'admin' : 'dashboard');
            } catch (e) {
                // Если токен протух / ошибка — вылогиниваем
                console.error(e);
                logout();
            }
        })();
        // eslint здесь нет, так что зависимости не важны
    }, [token]);

    const login = (newToken) => {
        localStorage.setItem('token', newToken);
        setToken(newToken);
    };

    const logout = () => {
        localStorage.removeItem('token');
        setToken(null);
        setUser(null);
        setView('login');
    };

    return (
        <AuthContext.Provider
            value={{
                token,
                user,
                setUser,
                login,
                logout,
                view,
                setView,
                isAdminOrManager,
            }}
        >
            <div className="min-h-screen">
                <Navbar />
                <div className="container mx-auto p-4">
                    {view === 'login' && <LoginForm />}
                    {view === 'admin' && <AdminPanel />}
                    {view === 'dashboard' && <UserDashboard />}
                    {view === 'profile' && <UserProfile />}
                    {view.startsWith('test_run_') && (
                        <TestRunner testId={view.split('_')[2]} />
                    )}
                </div>
            </div>
        </AuthContext.Provider>
    );
}

// Монтирование приложения
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
