diff --git a/src/domain/community/virtualContributor/VCRoute.tsx b/src/domain/community/virtualContributor/VCRoute.tsx
index 3c47bb0913..cab9144577 100644
--- a/src/domain/community/virtualContributor/VCRoute.tsx
+++ b/src/domain/community/virtualContributor/VCRoute.tsx
@@ -1,27 +1,18 @@
import { Route, Routes } from 'react-router-dom';
import VCProfilePage from './vcProfilePage/VCProfilePage';
import { PageLayoutHolderWithOutlet } from '@/domain/journey/common/EntityPageLayout';
-import TopLevelLayout from '@/main/ui/layout/TopLevelLayout';
import { Error404 } from '@/core/pages/Errors/Error404';
import VCSettingsRoute from '../virtualContributorAdmin/VCSettingsRoute';
import { nameOfUrl } from '@/main/routing/urlParams';
export const VCRoute = () => (
-
- }>
- } />
-
+ }>
+ } />
+ } />
} />
+ } />
-
-
-
- }
- />
);
diff --git a/src/domain/community/virtualContributor/vcProfilePage/VCProfileContentView.tsx b/src/domain/community/virtualContributor/vcProfilePage/VCProfileContentView.tsx
index d9b93f9fe6..fde422405e 100644
--- a/src/domain/community/virtualContributor/vcProfilePage/VCProfileContentView.tsx
+++ b/src/domain/community/virtualContributor/vcProfilePage/VCProfileContentView.tsx
@@ -1,4 +1,6 @@
-import { useState } from 'react';
+import { useEffect, useState } from 'react';
+import { useLocation } from 'react-router-dom';
+import useNavigate from '@/core/routing/useNavigate';
import { Button } from '@mui/material';
import BookIcon from '@mui/icons-material/Book';
import CloudDownloadIcon from '@mui/icons-material/CloudDownload';
@@ -16,6 +18,9 @@ import { type VCProfilePageViewProps } from './model';
import { AiPersonaBodyOfKnowledgeType } from '@/core/apollo/generated/graphql-schema';
import KnowledgeBaseDialog from '@/domain/community/virtualContributor/knowledgeBase/KnowledgeBaseDialog';
+// a temporary Knowledge Base route - `${vcProfileUrl}/${KNOWLEDGE_BASE_PATH}
+const KNOWLEDGE_BASE_PATH = 'knowledge-base';
+
const SectionTitle = ({ children }) => {
return (
@@ -31,6 +36,9 @@ const SectionContent = ({ children }) => {
export const VCProfileContentView = ({ bokProfile, virtualContributor }: VCProfilePageViewProps) => {
const { palette } = useTheme();
const { t } = useTranslation();
+ const navigate = useNavigate();
+ const location = useLocation();
+ const pathname = location.pathname;
const [showKnowledgeBase, setShowKnowledgeBase] = useState(false);
@@ -49,10 +57,47 @@ export const VCProfileContentView = ({ bokProfile, virtualContributor }: VCProfi
const isExternal = vcType === AiPersonaBodyOfKnowledgeType.None;
const hasSpaceKnowledge = vcType === AiPersonaBodyOfKnowledgeType.AlkemioSpace;
+ const isKnowledgeBasePath = (pathname: string) => {
+ const pathParts = pathname.split('/');
+
+ return pathParts[pathParts.length - 1] === KNOWLEDGE_BASE_PATH;
+ };
+
+ const removeKnowledgeBaseFromPath = (pathname: string) => {
+ const pathParts = pathname.split('/');
+
+ if (pathParts[pathParts.length - 1] === KNOWLEDGE_BASE_PATH) {
+ pathParts.pop();
+
+ const newPath = pathParts.join('/');
+ navigate(newPath, { replace: true });
+ }
+ };
+
+ const addKnowledgeBaseToPath = (pathname: string) => {
+ if (!isKnowledgeBasePath(pathname)) {
+ const newPath = `${pathname}/${KNOWLEDGE_BASE_PATH}`;
+
+ navigate(newPath, { replace: true });
+ }
+ };
+
const handleKnowledgeBaseClick = () => {
setShowKnowledgeBase(true);
+ addKnowledgeBaseToPath(pathname);
};
+ const onCloseKnowledgeBase = () => {
+ setShowKnowledgeBase(false);
+ removeKnowledgeBaseFromPath(pathname);
+ };
+
+ useEffect(() => {
+ if (isKnowledgeBasePath(pathname)) {
+ setShowKnowledgeBase(true);
+ }
+ }, [pathname, virtualContributor]);
+
return (
<>
@@ -133,7 +178,7 @@ export const VCProfileContentView = ({ bokProfile, virtualContributor }: VCProfi
setShowKnowledgeBase(false)}
+ onClose={onCloseKnowledgeBase}
/>
)}
>
diff --git a/src/domain/community/virtualContributorAdmin/VCSettingsRoute.tsx b/src/domain/community/virtualContributorAdmin/VCSettingsRoute.tsx
index 68163b75f6..9d2189f1a8 100644
--- a/src/domain/community/virtualContributorAdmin/VCSettingsRoute.tsx
+++ b/src/domain/community/virtualContributorAdmin/VCSettingsRoute.tsx
@@ -1,19 +1,16 @@
import { Navigate, Route, Routes } from 'react-router-dom';
import { Error404 } from '@/core/pages/Errors/Error404';
-import { PageLayoutHolderWithOutlet } from '@/domain/journey/common/EntityPageLayout';
import VCEditProfilePage from './vcSettingsPage/VCEditProfilePage';
import VCMembershipPage from '../virtualContributor/vcMembershipPage/VCMembershipPage';
import VCAccessibilitySettingsPage from './VCAccessibilitySettings/VCAccessibilitySettingsPage';
const VCSettingsRoute = () => (
- }>
- } />
- } />
- } />
- } />
- } />
-
+ } />
+ } />
+ } />
+ } />
+ } />
);