import React, { useCallback, useState } from 'react'; import { Box, Flex, useTheme, Input, IconButton, Tooltip, Image, Tag } from '@chakra-ui/react'; import { AddIcon } from '@chakra-ui/icons'; import { useRouter } from 'next/router'; import { postCreateKb } from '@/api/plugins/kb'; import { useLoading } from '@/hooks/useLoading'; import { useToast } from '@/hooks/useToast'; import { useQuery } from '@tanstack/react-query'; import { useUserStore } from '@/store/user'; import MyIcon from '@/components/Icon'; const KbList = ({ kbId }: { kbId: string }) => { const theme = useTheme(); const router = useRouter(); const { toast } = useToast(); const { Loading, setIsLoading } = useLoading(); const { myKbList, loadKbList } = useUserStore(); const [searchText, setSearchText] = useState(''); /* 加载模型 */ const { isLoading } = useQuery(['loadModels'], () => loadKbList(false)); const handleCreateModel = useCallback(async () => { setIsLoading(true); try { const name = `知识库${myKbList.length + 1}`; const id = await postCreateKb({ name }); await loadKbList(true); toast({ title: '创建成功', status: 'success' }); router.replace(`/kb?kbId=${id}`); } catch (err: any) { toast({ title: typeof err === 'string' ? err : err.message || '出现了意外', status: 'error' }); } setIsLoading(false); }, [loadKbList, myKbList.length, router, setIsLoading, toast]); return ( setSearchText(e.target.value)} /> {searchText && ( setSearchText('')} /> )} } aria-label={''} variant={'outline'} onClick={handleCreateModel} /> {myKbList.map((item) => ( { if (item._id === kbId) return; router.push(`/kb?kbId=${item._id}`); }} > {item.name} {/* tags */} {!item.tags ? ( <>{item.tags || '你还没设置标签~'} ) : ( item.tags.split(' ').map((item, i) => ( {item} )) )} ))} {!isLoading && myKbList.length === 0 && ( 知识库空空如也~ )} ); }; export default KbList;