/* * @Description: * @Version: 0.0.1 * @Author: yujiangping * @Date: 2025-11-10 18:52:55 * @LastEditors: yujiangping * @LastEditTime: 2026-03-09 16:34:51 */ import { forwardRef, useImperativeHandle, useState } from 'react'; import { Switch } from 'antd'; import { useTranslation } from 'react-i18next'; import { message } from 'antd'; import type { ShareModalRef, ShareModalRefProps, KnowledgeBase} 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 { getSpaceList, shareKnowledgeBase } from '@/api/knowledgeBase'; import { NoData } from './noData'; import type { SpaceItem } from '@/views/KnowledgeBase/types'; import { formatDateTime } from '@/utils/format'; const ShareModal = forwardRef(({ handleShare: onShare }, ref) => { const { t } = useTranslation(); const [messageApi, contextHolder] = message.useMessage(); const [visible, setVisible] = useState(false); const [loading, setLoading] = useState(false) const [curIndex, setCurIndex] = useState(-1); const [kbId, setKbId] = useState(''); const [spaceIds, setSpaceIds] = useState(''); const [knowledgeBase, setKnowledgeBase] = useState(null); const [spaceList, setSpaceList] = useState([]); // Close modal and reset state const handleClose = () => { setCurIndex(-1); setLoading(false) setVisible(false); }; const handleOpen = (kb_id?: string,knowledgeBase?: KnowledgeBase | null, spaceIds?:string) => { setKbId(kb_id ?? ''); setSpaceIds(spaceIds ?? '') setKnowledgeBase(knowledgeBase ?? null); setVisible(true); getSpaceListFn(spaceIds ?? '') }; const getSpaceListFn = async (ids:string) => { const response = await getSpaceList(); const filteredItems = response.items.filter(item => !ids.includes(item.id)); setSpaceList(filteredItems as SpaceItem[]); } const handleShare = async() => { // Get all data with checked = true const checkedItems = spaceList.filter(item => item.is_active); // Get currently selected item (corresponding to curIndex) const selectedItem = curIndex !== -1 ? spaceList[curIndex] : null; if(!selectedItem){ messageApi.error(t('knowledgeBase.selectSpace')); return; } setLoading(true); try { const payload = { source_kb_id: kbId ?? '', target_workspace_id: selectedItem?.id ?? '', } const respose = await shareKnowledgeBase(payload) if(respose){ messageApi.success(t('knowledgeBase.shareSuccess')); }else{ messageApi.error(t('knowledgeBase.shareFailed')); } // Call parent component's callback function with selected data onShare?.({ checkedItems, selectedItem }); // Close modal after sharing handleClose(); } finally { setLoading(false); } } const handleClick = (index: number, checked: boolean) => { if (!checked) return; setCurIndex(index); } // Expose methods to parent component useImperativeHandle(ref, () => ({ handleOpen, handleClose, handleShare })); return ( <> {contextHolder}

{t('knowledgeBase.shareTitle')}

{t('knowledgeBase.shareNote')}
{spaceList.length === 0 && ( )} {spaceList.map((item,index) => (
handleClick(index, item.is_active) : undefined} >
{item.name}
))}
); }); export default ShareModal;