import { useState, useEffect, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import { api } from '@/api'; import { errMessage } from '@/lib/utils'; 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'; import type { AdminUser } from '@/components/admin/UsersTable'; import type { User } from '@/hooks/useAuth'; 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 [authMode, setAuthMode] = useState('multi'); const loadMe = useCallback(async () => { try { const d = await api.me() as { user?: User }; setMe(d.user ?? null); } catch { navigate('/login', { replace: true }); } }, [navigate]); const loadUsers = useCallback(async () => { try { const d = await api.adminUsers() as { users?: AdminUser[] } | AdminUser[]; setUsers(Array.isArray(d) ? d : (d.users || [])); } catch { /* ignore */ } }, []); const loadHasUsers = useCallback(async () => { try { const d = await api.hasUsers() as { has_users?: boolean }; setHasUsers(!!d.has_users); if (d.has_users) loadUsers(); } catch (err) { setLoadError(errMessage(err, '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 ? ( ) : (
{authMode !== 'single' && }
)}
); }