import { faArrowUpRightFromSquare, faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { Button, DeleteActionModal } from "@app/components/v2"; import { ProjectPermissionPkiSubscriberActions, ProjectPermissionSub, useProject } from "@app/context"; import { useDeletePkiSubscriber, useUpdatePkiSubscriber } from "@app/hooks/api"; import { PkiSubscriberStatus } from "@app/hooks/api/pkiSubscriber/types"; import { usePopUp } from "@app/hooks/usePopUp"; import { PkiSubscriberModal } from "./PkiSubscriberModal"; import { PkiSubscribersTable } from "./PkiSubscribersTable"; export const PkiSubscriberSection = () => { const { currentProject } = useProject(); const projectId = currentProject.id; // TODO: Use subscription.pkiLegacyTemplates to block legacy templates creation const canCreateLegacySubscribers = true; const { mutateAsync: deletePkiSubscriber } = useDeletePkiSubscriber(); const { mutateAsync: updatePkiSubscriber } = useUpdatePkiSubscriber(); const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ "pkiSubscriber", "pkiSubscriberStatus", // enable / disable "deletePkiSubscriber" ] as const); const onRemovePkiSubscriberSubmit = async (subscriberName: string) => { const subscriber = await deletePkiSubscriber({ subscriberName, projectId }); createNotification({ text: `Successfully deleted PKI subscriber: ${subscriber.name}`, type: "success" }); handlePopUpClose("deletePkiSubscriber"); }; const onUpdatePkiSubscriberStatus = async ({ subscriberName, status }: { subscriberName: string; status: PkiSubscriberStatus; }) => { if (!currentProject?.slug) return; await updatePkiSubscriber({ subscriberName, projectId, status }); createNotification({ text: `Successfully ${status === PkiSubscriberStatus.ACTIVE ? "enabled" : "disabled"} subscriber`, type: "success" }); handlePopUpClose("pkiSubscriberStatus"); }; const subscriberStatusData = popUp?.pkiSubscriberStatus?.data as { status: PkiSubscriberStatus; subscriberName: string; }; const isEnabling = subscriberStatusData?.status === PkiSubscriberStatus.ACTIVE; const subscriberName = subscriberStatusData?.subscriberName || ""; return (

Subscribers

Documentation{" "} {canCreateLegacySubscribers && ( {(isAllowed) => ( )} )}
handlePopUpToggle("pkiSubscriberStatus", isOpen)} deleteKey="confirm" buttonColorSchema={isEnabling ? "primary" : "danger"} buttonText={isEnabling ? "Enable" : "Disable"} onDeleteApproved={() => onUpdatePkiSubscriberStatus(subscriberStatusData)} /> handlePopUpToggle("deletePkiSubscriber", isOpen)} deleteKey="confirm" onDeleteApproved={() => onRemovePkiSubscriberSubmit( (popUp?.deletePkiSubscriber?.data as { subscriberName: string })?.subscriberName ) } />
); };