|
|
|
@@ -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} |