import { MutableRefObject } from 'react' import { toast } from 'sonner' import { Modal } from 'ui' import { useFDWDeleteMutation } from 'data/fdw/fdw-delete-mutation' import type { FDW } from 'data/fdw/fdws-query' import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject' import { getWrapperMetaForWrapper } from './Wrappers.utils' interface DeleteWrapperModalProps { selectedWrapper?: FDW onClose: () => void deletingWrapperIdRef?: MutableRefObject } const DeleteWrapperModal = ({ selectedWrapper, onClose, deletingWrapperIdRef, }: DeleteWrapperModalProps) => { const { data: project } = useSelectedProjectQuery() const { mutate: deleteFDW, isPending: isDeleting } = useFDWDeleteMutation({ onSuccess: () => { toast.success(`Successfully disabled ${selectedWrapper?.name} foreign data wrapper`) onClose() }, onError: () => { if (deletingWrapperIdRef) { deletingWrapperIdRef.current = null } }, }) const wrapperMeta = getWrapperMetaForWrapper(selectedWrapper) const onConfirmDelete = async () => { if (!project?.ref) return console.error('Project ref is required') if (!selectedWrapper) return console.error('Wrapper is required') if (!wrapperMeta) return console.error('Wrapper meta is required') if (deletingWrapperIdRef) { deletingWrapperIdRef.current = selectedWrapper.id.toString() } deleteFDW({ projectRef: project?.ref, connectionString: project?.connectionString, wrapper: selectedWrapper, wrapperMeta: wrapperMeta, }) } return ( onClose()} onConfirm={() => onConfirmDelete()} header={`Confirm to disable ${selectedWrapper?.name}`} >

Are you sure you want to disable {selectedWrapper?.name}? This will also remove all tables created with this wrapper.

) } export default DeleteWrapperModal