| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import { ConfirmDeleteDialog } from '@/components/confirm-delete-dialog';
- import NewDocumentLink from '@/components/new-document-link';
- import { Button } from '@/components/ui/button';
- import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuSeparator,
- DropdownMenuTrigger,
- } from '@/components/ui/dropdown-menu';
- import { useDownloadFile } from '@/hooks/file-manager-hooks';
- import { IFile } from '@/interfaces/database/file-manager';
- import {
- getExtension,
- isSupportedPreviewDocumentType,
- } from '@/utils/document-util';
- import { CellContext } from '@tanstack/react-table';
- import { EllipsisVertical, Eye, Link2, Trash2 } from 'lucide-react';
- import { useCallback } from 'react';
- import { useTranslation } from 'react-i18next';
- import {
- UseHandleConnectToKnowledgeReturnType,
- UseRenameCurrentFileReturnType,
- } from './hooks';
- import { UseMoveDocumentShowType } from './use-move-file';
- import { isFolderType } from './util';
-
- type IProps = Pick<CellContext<IFile, unknown>, 'row'> &
- Pick<UseHandleConnectToKnowledgeReturnType, 'showConnectToKnowledgeModal'> &
- Pick<UseRenameCurrentFileReturnType, 'showFileRenameModal'> &
- UseMoveDocumentShowType;
-
- export function ActionCell({
- row,
- showConnectToKnowledgeModal,
- showFileRenameModal,
- showMoveFileModal,
- }: IProps) {
- const { t } = useTranslation();
- const record = row.original;
- const documentId = record.id;
- const { downloadFile } = useDownloadFile();
- const isFolder = isFolderType(record.type);
- const extension = getExtension(record.name);
-
- const handleShowConnectToKnowledgeModal = useCallback(() => {
- showConnectToKnowledgeModal(record);
- }, [record, showConnectToKnowledgeModal]);
-
- const onDownloadDocument = useCallback(() => {
- downloadFile({
- id: documentId,
- filename: record.name,
- });
- }, [documentId, downloadFile, record.name]);
-
- const handleShowFileRenameModal = useCallback(() => {
- showFileRenameModal(record);
- }, [record, showFileRenameModal]);
-
- const handleShowMoveFileModal = useCallback(() => {
- showMoveFileModal([record.id]);
- }, [record, showMoveFileModal]);
-
- return (
- <section className="flex gap-4 items-center">
- <Button
- variant="ghost"
- size={'icon'}
- onClick={handleShowConnectToKnowledgeModal}
- >
- <Link2 />
- </Button>
- <ConfirmDeleteDialog>
- <Button variant="ghost" size={'icon'}>
- <Trash2 />
- </Button>
- </ConfirmDeleteDialog>
- {isSupportedPreviewDocumentType(extension) && (
- <NewDocumentLink
- documentId={documentId}
- documentName={record.name}
- color="black"
- >
- <Button variant={'ghost'} size={'icon'}>
- <Eye />
- </Button>
- </NewDocumentLink>
- )}
- <DropdownMenu>
- <DropdownMenuTrigger asChild>
- <Button variant="ghost" size={'icon'}>
- <EllipsisVertical />
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align="end">
- <DropdownMenuItem onClick={handleShowMoveFileModal}>
- {t('common.move')}
- </DropdownMenuItem>
- <DropdownMenuSeparator />
- <DropdownMenuItem onClick={handleShowFileRenameModal}>
- {t('common.rename')}
- </DropdownMenuItem>
- <DropdownMenuSeparator />
- {isFolder || (
- <DropdownMenuItem onClick={onDownloadDocument}>
- {t('common.download')}
- </DropdownMenuItem>
- )}
- </DropdownMenuContent>
- </DropdownMenu>
- </section>
- );
- }
|