import { Navigate } from 'react-router-dom';

import { Loadable, lazyRetry } from 'src/lazyLoad';
import { ROUTE_PERMISSIONS } from 'src/utils/permissions';

import PermissionsGuard from 'src/components/PermissionsGuard';

import { agentsRoutes } from './routes';

const Agents = Loadable(lazyRetry(() => import('./index')));
const KnowledgeBase = Loadable(lazyRetry(() => import('./KnowledgeBase')));
const AgentsSettings = Loadable(lazyRetry(() => import('./Settings')));
const UploadFile = Loadable(
  lazyRetry(() => import('./KnowledgeBase/UploadFile')),
);

export const agentsRouterConfig = [
  {
    path: 'agents',
    element: (
      <PermissionsGuard requiredPermissions={ROUTE_PERMISSIONS.AGENTS}>
        <Agents />
      </PermissionsGuard>
    ),
    children: [
      {
        index: true,
        element: (
          <Navigate
            to={agentsRoutes.knowledgeBase.base()}
            replace
          />
        ),
      },
      {
        path: agentsRoutes.knowledgeBase.base(),
        element: <KnowledgeBase />,
      },
      {
        path: `${agentsRoutes.knowledgeBase.base()}/:folderPath`,
        element: <KnowledgeBase />,
      },
      {
        path: agentsRoutes.settings.base(),
        element: <AgentsSettings />,
      },
    ],
  },
  {
    path: agentsRoutes.knowledgeBase.uploadFile(),
    element: (
      <PermissionsGuard requiredPermissions={ROUTE_PERMISSIONS.AGENTS}>
        <UploadFile />
      </PermissionsGuard>
    ),
  },
];
