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

68 lines
1.6 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";
const baseClass = "delete-script-modal";
interface IDeleteScriptModalProps {
scriptName: string;
scriptId: number;
onCancel: () => void;
2023-10-10 22:00:45 +00:00
onDone: () => void;
}
const DeleteScriptModal = ({
scriptName,
scriptId,
onCancel,
2023-10-10 22:00:45 +00:00
onDone,
}: 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 {
renderFlash("error", "Couldnt delete. Please try again.");
}
onDone();
};
return (
<Modal
className={baseClass}
title={"Delete script"}
onExit={onCancel}
2023-10-10 22:00:45 +00:00
onEnter={() => onClickDelete(scriptId)}
>
<>
<p>
This action will cancel script{" "}
<span className={`${baseClass}__script-name`}>{scriptName}</span> from
2023-10-17 21:35:25 +00:00
running on macOS hosts on which the script hasn&apos;t run yet.
</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;