import React, { useState, useEffect } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; import { useSelector, useDispatch } from 'react-redux'; import { showNotification } from '../../store/notification.slice'; import SvgIcon from '../../components/SvgIcon'; import DatasetTab from './Detail/DatasetTab'; import SettingsTab from './Detail/SettingsTab'; export default function KnowledgeBaseDetail() { const { id, tab } = useParams(); const navigate = useNavigate(); const dispatch = useDispatch(); const [activeTab, setActiveTab] = useState(tab === 'settings' ? 'settings' : 'datasets'); // Get knowledge base details from Redux store const { items: knowledgeBases } = useSelector((state) => state.knowledgeBase.list); const knowledgeBase = knowledgeBases.find((kb) => kb.id === id); // Update active tab when URL changes useEffect(() => { if (tab) { setActiveTab(tab === 'settings' ? 'settings' : 'datasets'); } }, [tab]); // If knowledge base not found in Redux store, show notification and redirect useEffect(() => { if (!knowledgeBase && knowledgeBases.length > 0) { dispatch( showNotification({ message: '未找到知识库,请返回知识库列表', type: 'warning', }) ); navigate('/knowledge-base'); } }, [knowledgeBase, knowledgeBases, dispatch, navigate]); // Handle tab change const handleTabChange = (tab) => { setActiveTab(tab); navigate(`/knowledge-base/${id}/${tab}`); }; // Show loading state if knowledge base not loaded yet if (!knowledgeBase) { return (
{knowledgeBase.desc}