import React, { useContext, useState } from "react"; import scriptAPI from "services/entities/scripts"; import { NotificationContext } from "context/notification"; import Modal from "components/Modal"; import Button from "components/buttons/Button"; import { AxiosResponse } from "axios"; import { IApiError } from "../../../../../interfaces/errors"; import { getErrorMessage } from "../ScriptUploader/helpers"; const baseClass = "delete-script-modal"; interface IDeleteScriptModalProps { scriptName: string; scriptId: number; onCancel: () => void; onDone: () => void; isHidden?: boolean; } const DeleteScriptModal = ({ scriptName, scriptId, onCancel, onDone, isHidden = false, }: IDeleteScriptModalProps) => { const { renderFlash } = useContext(NotificationContext); const [isDeleting, setIsDeleting] = useState(false); const onClickDelete = async (id: number) => { setIsDeleting(true); try { await scriptAPI.deleteScript(id); renderFlash("success", "Successfully deleted!"); } catch (e) { const error = e as AxiosResponse; const apiErrMessage = getErrorMessage(error); renderFlash( "error", apiErrMessage.includes("Policy automation") ? apiErrMessage : "Couldn’t delete. Please try again." ); } setIsDeleting(false); onDone(); }; return ( onClickDelete(scriptId)} isHidden={isHidden} isContentDisabled={isDeleting} > <>

This action will cancel any pending script execution for{" "} {scriptName}

If the script is currently running on a host it will still complete, but results won't appear in Fleet.

You cannot undo this action.

); }; export default DeleteScriptModal;