fleet/frontend/pages/ManageControlsPage/Scripts/components/DeleteScriptModal/DeleteScriptModal.tsx

82 lines
2.1 KiB
TypeScript
Raw Normal View History

2023-10-10 22:00:45 +00:00
import React, { useContext } 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;
2023-10-10 22:00:45 +00:00
onDone: () => void;
isHidden?: boolean;
}
const DeleteScriptModal = ({
scriptName,
scriptId,
onCancel,
2023-10-10 22:00:45 +00:00
onDone,
isHidden = false,
}: IDeleteScriptModalProps) => {
2023-10-10 22:00:45 +00:00
const { renderFlash } = useContext(NotificationContext);
const onClickDelete = async (id: number) => {
try {
await scriptAPI.deleteScript(id);
renderFlash("success", "Successfully deleted!");
} catch (e) {
const error = e as AxiosResponse<IApiError>;
const apiErrMessage = getErrorMessage(error);
renderFlash(
"error",
apiErrMessage.includes("Policy automation")
? apiErrMessage
: "Couldnt delete. Please try again."
);
2023-10-10 22:00:45 +00:00
}
onDone();
};
return (
<Modal
className={baseClass}
title="Delete script"
onExit={onCancel}
2023-10-10 22:00:45 +00:00
onEnter={() => onClickDelete(scriptId)}
isHidden={isHidden}
>
<>
<p>
The script{" "}
<span className={`${baseClass}__script-name`}>{scriptName}</span> will
2024-09-30 14:45:46 +00:00
run on pending hosts. After the script runs, its output and exit code
will appear in the activity feed.
</p>
<div className="modal-cta-wrap">
<Button
type="button"
2023-10-10 22:00:45 +00:00
onClick={() => onClickDelete(scriptId)}
variant="alert"
className="delete-loading"
>
Delete
</Button>
<Button onClick={onCancel} variant="inverse-alert">
Cancel
</Button>
</div>
</>
</Modal>
);
};
export default DeleteScriptModal;