import React, { useMemo, useState } from 'react'; import { Card, Flex, Box, Button, ModalBody, ModalHeader, ModalFooter, useTheme, Grid } from '@chakra-ui/react'; import { getKbPaths } from '@/api/plugins/kb'; import Avatar from '@/components/Avatar'; import MyTooltip from '@/components/MyTooltip'; import MyModal from '@/components/MyModal'; import MyIcon from '@/components/Icon'; import { KbTypeEnum } from '@/constants/kb'; import { useTranslation } from 'react-i18next'; import { useQuery } from '@tanstack/react-query'; import { getKbList, putKbById } from '@/api/plugins/kb'; import { useRequest } from '@/hooks/useRequest'; const MoveModal = ({ onClose, onSuccess, moveDataId }: { onClose: () => void; onSuccess: () => void; moveDataId: string; }) => { const { t } = useTranslation(); const theme = useTheme(); const [parentId, setParentId] = useState(''); const { data } = useQuery(['getKbList', parentId], () => { return Promise.all([getKbList({ parentId, type: 'folder' }), getKbPaths(parentId)]); }); const paths = useMemo( () => [ { parentId: '', parentName: t('kb.My Dataset') }, ...(data?.[1] || []) ], [data, t] ); const folderList = useMemo( () => (data?.[0] || []).filter((item) => item._id !== moveDataId), [moveDataId, data] ); const { mutate, isLoading } = useRequest({ mutationFn: () => putKbById({ id: moveDataId, parentId }), onSuccess, errorToast: t('kb.Move Failed') }); return ( {!!parentId ? ( {paths.map((item, i) => ( { setParentId(item.parentId); } })} > {item.parentName} {i !== paths.length - 1 && ( )} ))} ) : ( 我的知识库 )} {folderList.map((item) => (() => { return ( { setParentId(item._id); }} > {item.name} {item.type === KbTypeEnum.folder ? ( {t('Folder')} ) : ( <> {item.vectorModel.name} )} ); })() )} {folderList.length === 0 && ( {t('kb.No Folder')} )} ); }; export default MoveModal;