|
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'; |
|
|
|
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" onClick={onShowConnectToKnowledgeModal}> |
|
<LinkOutlined size={20} /> |
|
</Button> |
|
</Tooltip> |
|
)} |
|
|
|
{isKnowledgeBase || ( |
|
<Tooltip title={t('rename', { keyPrefix: 'common' })}> |
|
<Button type="text" disabled={beingUsed} onClick={onShowRenameModal}> |
|
<EditOutlined size={20} /> |
|
</Button> |
|
</Tooltip> |
|
)} |
|
{isKnowledgeBase || ( |
|
<Tooltip title={t('move', { keyPrefix: 'common' })}> |
|
<Button |
|
type="text" |
|
disabled={beingUsed} |
|
onClick={onShowMoveFileModal} |
|
> |
|
<SvgIcon name={`move`} width={16}></SvgIcon> |
|
</Button> |
|
</Tooltip> |
|
)} |
|
{isKnowledgeBase || ( |
|
<Tooltip title={t('delete', { keyPrefix: 'common' })}> |
|
<Button type="text" disabled={beingUsed} onClick={handleRemoveFile}> |
|
<DeleteOutlined size={20} /> |
|
</Button> |
|
</Tooltip> |
|
)} |
|
{record.type !== 'folder' && ( |
|
<Tooltip title={t('download', { keyPrefix: 'common' })}> |
|
<Button type="text" disabled={beingUsed} onClick={onDownloadDocument}> |
|
<DownloadOutlined size={20} /> |
|
</Button> |
|
</Tooltip> |
|
)} |
|
{isSupportedPreviewDocumentType(extension) && ( |
|
<NewDocumentLink |
|
documentId={documentId} |
|
documentName={record.name} |
|
color="black" |
|
> |
|
<Tooltip title={t('preview')}> |
|
<Button type="text"> |
|
<EyeOutlined size={20} /> |
|
</Button> |
|
</Tooltip> |
|
</NewDocumentLink> |
|
)} |
|
</Space> |
|
); |
|
}; |
|
|
|
export default ActionCell; |
|
|