Spaces:
Paused
Paused
import NewDocumentLink from '@/components/new-document-link'; | |
import SvgIcon from '@/components/svg-icon'; | |
import { useTranslate } from '@/hooks/common-hooks'; | |
import { IFile } from '@/interfaces/database/file-manager'; | |
import { api_host } from '@/utils/api'; | |
import { | |
getExtension, | |
isSupportedPreviewDocumentType, | |
} from '@/utils/document-util'; | |
import { downloadFile } from '@/utils/file-util'; | |
import { | |
DeleteOutlined, | |
DownloadOutlined, | |
EditOutlined, | |
EyeOutlined, | |
LinkOutlined, | |
} from '@ant-design/icons'; | |
import { Button, Space, Tooltip } from 'antd'; | |
import { useHandleDeleteFile } from '../hooks'; | |
import styles from './index.less'; | |
interface IProps { | |
record: IFile; | |
setCurrentRecord: (record: any) => void; | |
showRenameModal: (record: IFile) => void; | |
showMoveFileModal: (ids: string[]) => void; | |
showConnectToKnowledgeModal: (record: IFile) => void; | |
setSelectedRowKeys(keys: string[]): void; | |
} | |
const ActionCell = ({ | |
record, | |
setCurrentRecord, | |
showRenameModal, | |
showConnectToKnowledgeModal, | |
setSelectedRowKeys, | |
showMoveFileModal, | |
}: IProps) => { | |
const documentId = record.id; | |
const beingUsed = false; | |
const { t } = useTranslate('fileManager'); | |
const { handleRemoveFile } = useHandleDeleteFile( | |
[documentId], | |
setSelectedRowKeys, | |
); | |
const extension = getExtension(record.name); | |
const isKnowledgeBase = record.source_type === 'knowledgebase'; | |
const onDownloadDocument = () => { | |
downloadFile({ | |
url: `${api_host}/file/get/${documentId}`, | |
filename: record.name, | |
}); | |
}; | |
const setRecord = () => { | |
setCurrentRecord(record); | |
}; | |
const onShowRenameModal = () => { | |
setRecord(); | |
showRenameModal(record); | |
}; | |
const onShowConnectToKnowledgeModal = () => { | |
showConnectToKnowledgeModal(record); | |
}; | |
const onShowMoveFileModal = () => { | |
showMoveFileModal([documentId]); | |
}; | |
return ( | |
<Space size={0}> | |
{isKnowledgeBase || ( | |
<Tooltip title={t('addToKnowledge')}> | |
<Button | |
type="text" | |
className={styles.iconButton} | |
onClick={onShowConnectToKnowledgeModal} | |
> | |
<LinkOutlined size={20} /> | |
</Button> | |
</Tooltip> | |
)} | |
{isKnowledgeBase || ( | |
<Tooltip title={t('rename', { keyPrefix: 'common' })}> | |
<Button | |
type="text" | |
disabled={beingUsed} | |
onClick={onShowRenameModal} | |
className={styles.iconButton} | |
> | |
<EditOutlined size={20} /> | |
</Button> | |
</Tooltip> | |
)} | |
{isKnowledgeBase || ( | |
<Tooltip title={t('move', { keyPrefix: 'common' })}> | |
<Button | |
type="text" | |
disabled={beingUsed} | |
onClick={onShowMoveFileModal} | |
className={styles.iconButton} | |
> | |
<SvgIcon name={`move`} width={16}></SvgIcon> | |
</Button> | |
</Tooltip> | |
)} | |
{isKnowledgeBase || ( | |
<Tooltip title={t('delete', { keyPrefix: 'common' })}> | |
<Button | |
type="text" | |
disabled={beingUsed} | |
onClick={handleRemoveFile} | |
className={styles.iconButton} | |
> | |
<DeleteOutlined size={20} /> | |
</Button> | |
</Tooltip> | |
)} | |
{record.type !== 'folder' && ( | |
<Tooltip title={t('download', { keyPrefix: 'common' })}> | |
<Button | |
type="text" | |
disabled={beingUsed} | |
onClick={onDownloadDocument} | |
className={styles.iconButton} | |
> | |
<DownloadOutlined size={20} /> | |
</Button> | |
</Tooltip> | |
)} | |
{isSupportedPreviewDocumentType(extension) && ( | |
<NewDocumentLink | |
documentId={documentId} | |
documentName={record.name} | |
color="black" | |
> | |
<Tooltip title={t('preview')}> | |
<Button type="text" className={styles.iconButton}> | |
<EyeOutlined size={20} /> | |
</Button> | |
</Tooltip> | |
</NewDocumentLink> | |
)} | |
</Space> | |
); | |
}; | |
export default ActionCell; | |