/* * @Description: * @Version: 0.0.1 * @Author: yujiangping * @Date: 2025-11-10 18:52:55 * @LastEditors: ZhaoYing * @LastEditTime: 2026-03-25 18:30:28 */ import { forwardRef, useImperativeHandle, useState, useRef } from 'react'; import { Switch, App } from 'antd'; import { useTranslation } from 'react-i18next'; import type { ShareModalRef, ShareModalRefProps, KnowledgeBase, SpaceItem} from '@/views/KnowledgeBase/types'; import RbModal from '@/components/RbModal' // import betchControlIcon from '@/assets/images/knowledgeBase/betch-control.png'; import kbIcon from '@/assets/images/knowledgeBase/knowledge-management.png'; // import robotIcon from '@/assets/images/knowledgeBase/robot.png'; import { updateKnowledgeBase, getWorkspaceAuthorizationList } from '@/api/knowledgeBase'; import { NoData } from './noData'; import type { ListQuery, ShareSpaceModalRef } from '@/views/KnowledgeBase/types'; import { formatDateTime } from '@/utils/format'; import ShareSpaceModal from './ShareSpaceModal' const ShareModal = forwardRef(({ handleShare: onShare }, ref) => { const { t } = useTranslation(); const shareSpaceModalRef = useRef(null); const { message: messageApi } = App.useApp() const [visible, setVisible] = useState(false); const [loading, setLoading] = useState(false) const [curIndex, setCurIndex] = useState(9999); const [query, setQuery] = useState({}); const [kbId, setKbId] = useState(''); const [knowledgeBase, setKnowledgeBase] = useState(null); const [spaceList, setSpaceList] = useState([]); // Close modal and reset state const handleClose = () => { setCurIndex(9999); setLoading(false) setVisible(false); }; const handleOpen = (kb_id?: string,knowledgeBase?: KnowledgeBase | null) => { setKbId(kb_id ?? ''); setKnowledgeBase(knowledgeBase ?? null); setVisible(true); getShareSpaceList(kb_id || '') // getSpaceListFn() }; const getShareSpaceList = async(id: string) => { try{ const response = await getWorkspaceAuthorizationList(id) setSpaceList(response?.items as any[]); } catch (error) { messageApi.error(t('knowledgeBase.shareFailed')); } } const handleShare = async() => { setLoading(true); try { const workspaceIds = spaceList .map(item => item.target_kb?.workspace_id) .filter(Boolean) .join(','); console.log('Workspace IDs:', workspaceIds); shareSpaceModalRef?.current?.handleOpen(kbId,knowledgeBase,workspaceIds); // Close modal after sharing handleClose(); } finally { setLoading(false); } } const handleChange = (checked: boolean, item: any) => { // Toggle shared knowledge base status console.log('Switch changed:', checked, item); updateKnowledgeBase(item.target_kb?.id, { status: checked ? 1 : 2 }).then(() => { if(checked){ messageApi.success(t('knowledgeBase.shareSuccess')); }else{ messageApi.success(t('knowledgeBase.stopShareSuccess')); } getShareSpaceList(kbId); }).catch(() => { messageApi.error(t('knowledgeBase.shareFailed')); }) } // Expose methods to parent component useImperativeHandle(ref, () => ({ handleOpen, handleClose, handleShare })); return ( <>

{t('knowledgeBase.shareSpaceTitle')}

{t('knowledgeBase.shareSpaceNote')}
{spaceList.length === 0 && ( )} {spaceList.map((item,index) => (
{item.target_workspace?.name} {t('knowledgeBase.authorizedPerson')}:{item.shared_user?.username} {formatDateTime((item.target_workspace?.created_at || 0))}
handleChange(checked, item)} />
))}
); }); export default ShareModal;