import { useState, useEffect } from 'react';
import { useLocation, useNavigate } from 'react-router-dom';
import { FiHome, FiBarChart2, FiUsers, FiList, FiCheckCircle, FiActivity, FiSettings } from 'react-icons/fi';
import Layout from '../components/Layout.jsx';
import SidebarNavItem from '../components/layout/SidebarNavItem.jsx';
import usePageState from '../hooks/usePageState.js';
import { ADMIN_PAGES } from '../constants/pages.js';
import { ADMIN_KEYS } from '../constants/storageKeys.js';
import OverviewPage from './admin/OverviewPage.jsx';
import DepartmentsPage from './admin/DepartmentsPage.jsx';
import UsersPage from './admin/UsersPage.jsx';
import AdminProjectsPage from './admin/AdminProjectsPage.jsx';
import AddDepartmentPage from './admin/AddDepartmentPage.jsx';
import AddUserPage from './admin/AddUserPage.jsx';
import AddProjectPage from './admin/AddProjectPage.jsx';
import AdminLogsPage from './admin/AdminLogsPage.jsx';
import ConsoleReviewListPage from './console/ConsoleReviewListPage.jsx';
import ConsoleReviewDetailPage from './console/ConsoleReviewDetailPage.jsx';
import ModelConfigsPage from './admin/ModelConfigsPage.jsx';
import AddModelConfigPage from './admin/AddModelConfigPage.jsx';
function AdminPage() {
const location = useLocation();
const navigate = useNavigate();
const { currentPage, setCurrentPage } = usePageState({
storageKey: ADMIN_KEYS.CURRENT_PAGE,
defaultPage: 'overview',
pageTitles: ADMIN_PAGES,
});
const [editData, setEditData] = useState(null);
const [reviewType, setReviewType] = useState(null);
const [reviewId, setReviewId] = useState(null);
const navigateTo = (page, data) => {
setEditData(data || null);
setCurrentPage(page);
};
const handleReviewClick = (type, id) => {
setReviewType(type);
setReviewId(id);
navigateTo('reviewDetail');
};
const handleReviewBack = () => {
setReviewType(null);
setReviewId(null);
navigateTo('reviewList');
};
const renderPage = () => {
switch (currentPage) {
case 'overview':
return ;
case 'departments':
return navigateTo('addDepartment')}
onEdit={(dept) => navigateTo('addDepartment', dept)}
/>;
case 'users':
return navigateTo('addUser')}
onEdit={(user) => navigateTo('addUser', user)}
/>;
case 'projects':
return navigateTo('addProject')}
onEdit={(project) => navigateTo('addProject', project)}
/>;
case 'adminLogs':
return ;
case 'reviewList':
return ;
case 'reviewDetail':
return ;
case 'addDepartment':
return navigateTo('departments')}
editData={editData}
/>;
case 'addUser':
return navigateTo('users')}
editData={editData}
/>;
case 'addProject':
return navigateTo('projects')}
editData={editData}
/>;
case 'modelConfigs':
return navigateTo('addModelConfig')}
onEdit={(config) => navigateTo('addModelConfig', config)}
/>;
case 'addModelConfig':
return navigateTo('modelConfigs')}
editData={editData}
/>;
default:
return Page not found
;
}
};
const sidebar = (
<>
>
);
return (
{renderPage()}
);
}
export default AdminPage;