NEWONE1
/
invokeai
/frontend
/web
/src
/features
/workflowLibrary
/components
/DeleteLibraryWorkflowConfirmationAlertDialog.tsx
import { ConfirmationAlertDialog, Text } from '@invoke-ai/ui-library'; | |
import { useStore } from '@nanostores/react'; | |
import { useAssertSingleton } from 'common/hooks/useAssertSingleton'; | |
import { toast } from 'features/toast/toast'; | |
import { atom } from 'nanostores'; | |
import { useCallback } from 'react'; | |
import { useTranslation } from 'react-i18next'; | |
import { useDeleteWorkflowMutation, workflowsApi } from 'services/api/endpoints/workflows'; | |
import type { WorkflowRecordListItemDTO } from 'services/api/types'; | |
const $workflowToDelete = atom<WorkflowRecordListItemDTO | null>(null); | |
const clearWorkflowToDelete = () => $workflowToDelete.set(null); | |
export const useDeleteWorkflow = () => { | |
const deleteWorkflow = useCallback((workflow: WorkflowRecordListItemDTO) => { | |
$workflowToDelete.set(workflow); | |
}, []); | |
return deleteWorkflow; | |
}; | |
export const DeleteWorkflowDialog = () => { | |
useAssertSingleton('DeleteWorkflowDialog'); | |
const { t } = useTranslation(); | |
const workflowToDelete = useStore($workflowToDelete); | |
const [_deleteWorkflow] = useDeleteWorkflowMutation(); | |
const deleteWorkflow = useCallback(async () => { | |
if (!workflowToDelete) { | |
return; | |
} | |
try { | |
await _deleteWorkflow(workflowToDelete.workflow_id).unwrap(); | |
toast({ | |
id: 'WORKFLOW_DELETED', | |
title: t('toast.workflowDeleted'), | |
}); | |
} catch { | |
toast({ | |
id: `AUTH_ERROR_TOAST_${workflowsApi.endpoints.deleteWorkflow.name}`, | |
title: t('toast.problemDeletingWorkflow'), | |
status: 'error', | |
}); | |
} | |
}, [_deleteWorkflow, t, workflowToDelete]); | |
return ( | |
<ConfirmationAlertDialog | |
isOpen={workflowToDelete !== null} | |
onClose={clearWorkflowToDelete} | |
title={t('workflows.deleteWorkflow')} | |
acceptCallback={deleteWorkflow} | |
acceptButtonText={t('common.delete')} | |
cancelButtonText={t('common.cancel')} | |
useInert={false} | |
> | |
<Text>{t('workflows.deleteWorkflow2')}</Text> | |
</ConfirmationAlertDialog> | |
); | |
}; | |