mirror of
https://github.com/infiniflow/ragflow.git
synced 2025-12-08 20:42:30 +08:00
Fix: The files in the knowledge base folder on the file management page should not be deleted #9975 (#9976)
### What problem does this PR solve? Fix: The files in the knowledge base folder on the file management page should not be deleted #9975 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@ -21,8 +21,9 @@ import {
|
|||||||
UseHandleConnectToKnowledgeReturnType,
|
UseHandleConnectToKnowledgeReturnType,
|
||||||
UseRenameCurrentFileReturnType,
|
UseRenameCurrentFileReturnType,
|
||||||
} from './hooks';
|
} from './hooks';
|
||||||
|
import { useHandleDeleteFile } from './use-delete-file';
|
||||||
import { UseMoveDocumentShowType } from './use-move-file';
|
import { UseMoveDocumentShowType } from './use-move-file';
|
||||||
import { isFolderType } from './util';
|
import { isFolderType, isKnowledgeBaseType } from './util';
|
||||||
|
|
||||||
type IProps = Pick<CellContext<IFile, unknown>, 'row'> &
|
type IProps = Pick<CellContext<IFile, unknown>, 'row'> &
|
||||||
Pick<UseHandleConnectToKnowledgeReturnType, 'showConnectToKnowledgeModal'> &
|
Pick<UseHandleConnectToKnowledgeReturnType, 'showConnectToKnowledgeModal'> &
|
||||||
@ -40,6 +41,7 @@ export function ActionCell({
|
|||||||
const { downloadFile } = useDownloadFile();
|
const { downloadFile } = useDownloadFile();
|
||||||
const isFolder = isFolderType(record.type);
|
const isFolder = isFolderType(record.type);
|
||||||
const extension = getExtension(record.name);
|
const extension = getExtension(record.name);
|
||||||
|
const isKnowledgeBase = isKnowledgeBaseType(record.source_type);
|
||||||
|
|
||||||
const handleShowConnectToKnowledgeModal = useCallback(() => {
|
const handleShowConnectToKnowledgeModal = useCallback(() => {
|
||||||
showConnectToKnowledgeModal(record);
|
showConnectToKnowledgeModal(record);
|
||||||
@ -60,34 +62,44 @@ export function ActionCell({
|
|||||||
showMoveFileModal([record.id]);
|
showMoveFileModal([record.id]);
|
||||||
}, [record, showMoveFileModal]);
|
}, [record, showMoveFileModal]);
|
||||||
|
|
||||||
|
const { handleRemoveFile } = useHandleDeleteFile();
|
||||||
|
|
||||||
|
const onRemoveFile = useCallback(() => {
|
||||||
|
handleRemoveFile([documentId]);
|
||||||
|
}, [handleRemoveFile, documentId]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="flex gap-4 items-center text-text-sub-title-invert opacity-0 group-hover:opacity-100 transition-opacity">
|
<section className="flex gap-4 items-center text-text-sub-title-invert opacity-0 group-hover:opacity-100 transition-opacity">
|
||||||
<Button
|
{isKnowledgeBase || (
|
||||||
variant="transparent"
|
<Button
|
||||||
className="border-none hover:bg-bg-card text-text-primary"
|
variant="transparent"
|
||||||
size={'sm'}
|
className="border-none hover:bg-bg-card text-text-primary"
|
||||||
onClick={handleShowConnectToKnowledgeModal}
|
size={'sm'}
|
||||||
>
|
onClick={handleShowConnectToKnowledgeModal}
|
||||||
<Link2 />
|
>
|
||||||
</Button>
|
<Link2 />
|
||||||
<Button
|
</Button>
|
||||||
variant="transparent"
|
)}
|
||||||
className="border-none hover:bg-bg-card text-text-primary"
|
{isKnowledgeBase || (
|
||||||
size={'sm'}
|
<Button
|
||||||
onClick={handleShowMoveFileModal}
|
variant="transparent"
|
||||||
>
|
className="border-none hover:bg-bg-card text-text-primary"
|
||||||
<FolderInput />
|
size={'sm'}
|
||||||
</Button>
|
onClick={handleShowMoveFileModal}
|
||||||
|
>
|
||||||
<Button
|
<FolderInput />
|
||||||
variant="transparent"
|
</Button>
|
||||||
className="border-none hover:bg-bg-card text-text-primary"
|
)}
|
||||||
size={'sm'}
|
{isKnowledgeBase || (
|
||||||
onClick={handleShowFileRenameModal}
|
<Button
|
||||||
>
|
variant="transparent"
|
||||||
<FolderPen />
|
className="border-none hover:bg-bg-card text-text-primary"
|
||||||
</Button>
|
size={'sm'}
|
||||||
|
onClick={handleShowFileRenameModal}
|
||||||
|
>
|
||||||
|
<FolderPen />
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
{isFolder || (
|
{isFolder || (
|
||||||
<Button
|
<Button
|
||||||
variant="transparent"
|
variant="transparent"
|
||||||
@ -138,15 +150,17 @@ export function ActionCell({
|
|||||||
)}
|
)}
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu> */}
|
</DropdownMenu> */}
|
||||||
<ConfirmDeleteDialog>
|
{isKnowledgeBase || (
|
||||||
<Button
|
<ConfirmDeleteDialog onOk={onRemoveFile}>
|
||||||
variant="transparent"
|
<Button
|
||||||
className="border-none hover:bg-bg-card text-text-primary"
|
variant="transparent"
|
||||||
size={'sm'}
|
className="border-none hover:bg-bg-card text-text-primary"
|
||||||
>
|
size={'sm'}
|
||||||
<Trash2 />
|
>
|
||||||
</Button>
|
<Trash2 />
|
||||||
</ConfirmDeleteDialog>
|
</Button>
|
||||||
|
</ConfirmDeleteDialog>
|
||||||
|
)}
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,7 +48,7 @@ import { KnowledgeCell } from './knowledge-cell';
|
|||||||
import { LinkToDatasetDialog } from './link-to-dataset-dialog';
|
import { LinkToDatasetDialog } from './link-to-dataset-dialog';
|
||||||
import { UseMoveDocumentShowType } from './use-move-file';
|
import { UseMoveDocumentShowType } from './use-move-file';
|
||||||
import { useNavigateToOtherFolder } from './use-navigate-to-folder';
|
import { useNavigateToOtherFolder } from './use-navigate-to-folder';
|
||||||
import { isFolderType } from './util';
|
import { isFolderType, isKnowledgeBaseType } from './util';
|
||||||
|
|
||||||
type FilesTableProps = Pick<
|
type FilesTableProps = Pick<
|
||||||
ReturnType<typeof useFetchFileList>,
|
ReturnType<typeof useFetchFileList>,
|
||||||
@ -112,6 +112,7 @@ export function FilesTable({
|
|||||||
checked={row.getIsSelected()}
|
checked={row.getIsSelected()}
|
||||||
onCheckedChange={(value) => row.toggleSelected(!!value)}
|
onCheckedChange={(value) => row.toggleSelected(!!value)}
|
||||||
aria-label="Select row"
|
aria-label="Select row"
|
||||||
|
disabled={!row.getCanSelect()}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
enableSorting: false,
|
enableSorting: false,
|
||||||
@ -247,7 +248,9 @@ export function FilesTable({
|
|||||||
onRowSelectionChange: setRowSelection,
|
onRowSelectionChange: setRowSelection,
|
||||||
|
|
||||||
manualPagination: true, //we're doing manual "server-side" pagination
|
manualPagination: true, //we're doing manual "server-side" pagination
|
||||||
|
enableRowSelection(row) {
|
||||||
|
return !isKnowledgeBaseType(row.original.source_type);
|
||||||
|
},
|
||||||
state: {
|
state: {
|
||||||
sorting,
|
sorting,
|
||||||
columnFilters,
|
columnFilters,
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
export function isFolderType(type: string) {
|
export function isFolderType(type: string) {
|
||||||
return type === 'folder';
|
return type === 'folder';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function isKnowledgeBaseType(sourceType: string) {
|
||||||
|
return sourceType === 'knowledgebase';
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user