| import { useNextFetchKnowledgeList } from '@/hooks/knowledge-hooks'; | |
| import { useFetchUserInfo } from '@/hooks/user-setting-hooks'; | |
| import { PlusOutlined, SearchOutlined } from '@ant-design/icons'; | |
| import { Button, Empty, Flex, Input, Space, Spin } from 'antd'; | |
| import KnowledgeCard from './knowledge-card'; | |
| import KnowledgeCreatingModal from './knowledge-creating-modal'; | |
| import { useTranslation } from 'react-i18next'; | |
| import { useSaveKnowledge, useSearchKnowledge } from './hooks'; | |
| import styles from './index.less'; | |
| const KnowledgeList = () => { | |
| const { searchString, handleInputChange } = useSearchKnowledge(); | |
| const { loading, list: data } = useNextFetchKnowledgeList(); | |
| const list = data.filter((x) => x.name.includes(searchString)); | |
| const { data: userInfo } = useFetchUserInfo(); | |
| const { t } = useTranslation('translation', { keyPrefix: 'knowledgeList' }); | |
| const { | |
| visible, | |
| hideModal, | |
| showModal, | |
| onCreateOk, | |
| loading: creatingLoading, | |
| } = useSaveKnowledge(); | |
| return ( | |
| <Flex className={styles.knowledge} vertical flex={1}> | |
| <div className={styles.topWrapper}> | |
| <div> | |
| <span className={styles.title}> | |
| {t('welcome')}, {userInfo.nickname} | |
| </span> | |
| <p className={styles.description}>{t('description')}</p> | |
| </div> | |
| <Space size={'large'}> | |
| <Input | |
| placeholder={t('searchKnowledgePlaceholder')} | |
| value={searchString} | |
| style={{ width: 220 }} | |
| allowClear | |
| onChange={handleInputChange} | |
| prefix={<SearchOutlined />} | |
| /> | |
| <Button | |
| type="primary" | |
| icon={<PlusOutlined />} | |
| onClick={showModal} | |
| className={styles.topButton} | |
| > | |
| {t('createKnowledgeBase')} | |
| </Button> | |
| </Space> | |
| </div> | |
| <Spin spinning={loading}> | |
| <Flex | |
| gap={'large'} | |
| wrap="wrap" | |
| className={styles.knowledgeCardContainer} | |
| > | |
| {list.length > 0 ? ( | |
| list.map((item: any) => { | |
| return ( | |
| <KnowledgeCard item={item} key={item.name}></KnowledgeCard> | |
| ); | |
| }) | |
| ) : ( | |
| <Empty className={styles.knowledgeEmpty}></Empty> | |
| )} | |
| </Flex> | |
| </Spin> | |
| <KnowledgeCreatingModal | |
| loading={creatingLoading} | |
| visible={visible} | |
| hideModal={hideModal} | |
| onOk={onCreateOk} | |
| ></KnowledgeCreatingModal> | |
| </Flex> | |
| ); | |
| }; | |
| export default KnowledgeList; | |