import type { Dispatch, SetStateAction } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { HttpError } from "@calcom/lib/http-error"; import { trpc } from "@calcom/trpc/react"; import { ConfirmationDialogContent, Dialog, showToast } from "@calcom/ui"; interface IDeleteDialog { isOpenDialog: boolean; setIsOpenDialog: Dispatch>; workflowId: number; additionalFunction: () => Promise; } export const DeleteDialog = (props: IDeleteDialog) => { const { t } = useLocale(); const { isOpenDialog, setIsOpenDialog, workflowId, additionalFunction } = props; const utils = trpc.useContext(); const deleteMutation = trpc.viewer.workflows.delete.useMutation({ onSuccess: async () => { await utils.viewer.workflows.list.invalidate(); additionalFunction(); showToast(t("workflow_deleted_successfully"), "success"); setIsOpenDialog(false); }, onError: (err) => { if (err instanceof HttpError) { const message = `${err.statusCode}: ${err.message}`; showToast(message, "error"); setIsOpenDialog(false); } if (err.data?.code === "UNAUTHORIZED") { const message = `${err.data.code}: You are not authorized to delete this workflow`; showToast(message, "error"); } }, }); return ( { e.preventDefault(); deleteMutation.mutate({ id: workflowId }); }}> {t("delete_workflow_description")} ); };