import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { NavLink, Outlet, useNavigate } from 'umi';
import { useMutation, useQuery } from '@tanstack/react-query';
import {
LucideMonitor,
LucideServerCrash,
LucideSquareUserRound,
LucideUserCog,
LucideUserStar,
} from 'lucide-react';
import { Button } from '@/components/ui/button';
import { cn } from '@/lib/utils';
import { Routes } from '@/routes';
import { getSystemVersion, logout } from '@/services/admin-service';
import authorizationUtil from '@/utils/authorization-util';
import ThemeSwitch from '../components/theme-switch';
import { IS_ENTERPRISE } from '../utils';
const AdminNavigationLayout = () => {
const { t } = useTranslation();
const navigate = useNavigate();
const { data: version } = useQuery({
queryKey: ['admin/version'],
queryFn: async () => (await getSystemVersion())?.data?.data?.version,
});
const navItems = useMemo(
() => [
{
path: Routes.AdminServices,
name: t('admin.serviceStatus'),
icon: ,
},
{
path: Routes.AdminUserManagement,
name: t('admin.userManagement'),
icon: ,
},
...(IS_ENTERPRISE
? [
{
path: Routes.AdminWhitelist,
name: t('admin.registrationWhitelist'),
icon: ,
},
{
path: Routes.AdminRoles,
name: t('admin.roles'),
icon: ,
},
{
path: Routes.AdminMonitoring,
name: t('admin.monitoring'),
icon: ,
},
]
: []),
],
[t],
);
const logoutMutation = useMutation({
mutationKey: ['adminLogout'],
mutationFn: async () => {
await logout();
authorizationUtil.removeAll();
navigate(Routes.Admin);
},
retry: false,
});
return (
);
};
export default AdminNavigationLayout;