import React, { useState, useEffect, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import { api } from '@/api'; import AppNavigation from '@/components/layout/Sidebar'; import OnboardingWizard from '@/components/admin/OnboardingWizard'; import EmailNotifCard from '@/components/admin/EmailNotifCard'; import BankSyncAdminCard from '@/components/admin/BankSyncAdminCard'; import LoginModeCard from '@/components/admin/LoginModeCard'; import AuthMethodsCard from '@/components/admin/AuthMethodsCard'; import UsersTable from '@/components/admin/UsersTable'; import AddUserCard from '@/components/admin/AddUserCard'; import BackupManagementCard from '@/components/admin/BackupManagementCard'; import CleanupPanel from '@/components/admin/CleanupPanel'; export default function AdminPage() { const navigate = useNavigate(); const [me, setMe] = useState(null); const [hasUsers, setHasUsers] = useState(null); const [loadError, setLoadError] = useState(''); const [users, setUsers] = useState([]); const loadMe = useCallback(async () => { try { const d = await api.me(); setMe(d.user); } catch { navigate('/login', { replace: true }); } }, [navigate]); const loadUsers = useCallback(async () => { try { const d = await api.adminUsers(); setUsers(d.users || d); } catch {} }, []); const loadHasUsers = useCallback(async () => { try { const d = await api.hasUsers(); setHasUsers(d.has_users); if (d.has_users) loadUsers(); } catch (err) { setLoadError(err.message || 'Failed to load admin page'); setHasUsers(false); } }, [loadUsers]); useEffect(() => { loadMe(); loadHasUsers(); }, [loadMe, loadHasUsers]); const handleOnboardingComplete = () => { setHasUsers(true); loadUsers(); }; if (hasUsers === null && !loadError) { return (
Loading…
); } if (loadError) { return (
{loadError}
); } return (
{!hasUsers ? ( ) : (
)}
); }