/** * TODO (dangtony98): Reevaluate if this component should be in main * CertificateTab or under CA page in the future. */ import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { DeleteActionModal, IconButton } from "@app/components/v2"; import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context"; import { usePopUp } from "@app/hooks"; import { useDeleteCertTemplate } from "@app/hooks/api"; import { CertificateTemplateEnrollmentModal } from "./CertificateTemplateEnrollmentModal"; import { CertificateTemplateModal } from "./CertificateTemplateModal"; import { CertificateTemplatesTable } from "./CertificateTemplatesTable"; type Props = { caId: string; }; export const CertificateTemplatesSection = ({ caId }: Props) => { const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ "certificateTemplate", "deleteCertificateTemplate", "enrollmentOptions", "upgradePlan" ] as const); const { currentWorkspace } = useWorkspace(); const { mutateAsync: deleteCertTemplate } = useDeleteCertTemplate(); const onRemoveCertificateTemplateSubmit = async (id: string) => { if (!currentWorkspace?.id) { return; } try { await deleteCertTemplate({ id, projectId: currentWorkspace.id }); createNotification({ text: "Successfully deleted certificate template", type: "success" }); handlePopUpClose("deleteCertificateTemplate"); } catch (err) { console.error(err); createNotification({ text: "Failed to delete certificate template", type: "error" }); } }; return (

Certificate Templates

{(isAllowed) => ( handlePopUpOpen("certificateTemplate")} isDisabled={!isAllowed} > )}
handlePopUpToggle("deleteCertificateTemplate", isOpen)} deleteKey="confirm" onDeleteApproved={() => onRemoveCertificateTemplateSubmit( (popUp?.deleteCertificateTemplate?.data as { id: string })?.id ) } /> handlePopUpToggle("upgradePlan", isOpen)} text="Managing template enrollment options for EST is only available on Infisical's Enterprise plan." />
); };