@ -10,7 +10,7 @@ import {
} from '@remixicon/react'
import Confirm from '@/app/components/base/confirm'
import { ToastContext } from '@/app/components/base/toast'
import { deleteDataset } from '@/service/datasets'
import { checkIsUsedInApp, deleteDataset } from '@/service/datasets'
import type { DataSet } from '@/models/datasets'
import Tooltip from '@/app/components/base/tooltip'
import { Folder } from '@/app/components/base/icons/src/vender/solid/files'
@ -36,6 +36,19 @@ const DatasetCard = ({
const [ showRenameModal , setShowRenameModal ] = useState ( false )
const [ showConfirmDelete , setShowConfirmDelete ] = useState ( false )
const [ confirmMessage , setConfirmMessage ] = useState < string > ( '' )
const detectIsUsedByApp = useCallback ( async ( ) = > {
try {
const { is_using : isUsedByApp } = await checkIsUsedInApp ( dataset . id )
setConfirmMessage ( isUsedByApp ? t ( 'dataset.datasetUsedByApp' ) ! : t ( 'dataset.deleteDatasetConfirmContent' ) ! )
}
catch ( e : any ) {
const res = await e . json ( )
notify ( { type : 'error' , message : res?.message || 'Unknown error' } )
}
setShowConfirmDelete ( true )
} , [ dataset . id , notify , t ] )
const onConfirmDelete = useCallback ( async ( ) = > {
try {
await deleteDataset ( dataset . id )
@ -44,10 +57,9 @@ const DatasetCard = ({
onSuccess ( )
}
catch ( e : any ) {
notify ( { type : 'error' , message : ` ${ t ( 'dataset.datasetDeleteFailed' ) } ${ 'message' in e ? ` : ${ e . message } ` : '' } ` } )
}
setShowConfirmDelete ( false )
} , [ dataset . id ])
} , [ dataset . id , notify , onSuccess , t ])
const Operations = ( props : HtmlContentProps ) = > {
const onMouseLeave = async ( ) = > {
@ -63,7 +75,7 @@ const DatasetCard = ({
e . stopPropagation ( )
props . onClick ? . ( )
e . preventDefault ( )
setShowConfirmDelete( true )
detectIsUsedByApp( )
}
return (
< div className = "relative w-full py-1" onMouseLeave = { onMouseLeave } >
@ -159,7 +171,7 @@ const DatasetCard = ({
/ >
< / div >
< / div >
< div className = '!hidden group-hover:!flex shrink-0 mx-1 w-[1px] h-[14px] bg-gray-200' / >
< div className = '!hidden group-hover:!flex shrink-0 mx-1 w-[1px] h-[14px] bg-gray-200' / >
< div className = '!hidden group-hover:!flex shrink-0' >
< CustomPopover
htmlContent = { < Operations / > }
@ -194,7 +206,7 @@ const DatasetCard = ({
{ showConfirmDelete && (
< Confirm
title = { t ( 'dataset.deleteDatasetConfirmTitle' ) }
content = { t( 'dataset.deleteDatasetConfirmContent' ) }
content = { confirmMessage }
isShow = { showConfirmDelete }
onClose = { ( ) = > setShowConfirmDelete ( false ) }
onConfirm = { onConfirmDelete }