fleet/frontend/components/AddHostsModal/AddHostsModal.tsx

100 lines
2.4 KiB
TypeScript
Raw Normal View History

import React, { useContext } from "react";
import { useQuery } from "react-query";
import configAPI from "services/entities/config";
import { AppContext } from "context/app";
import Button from "components/buttons/Button";
import DataError from "components/DataError";
import Modal from "components/Modal";
import Spinner from "components/Spinner";
import PlatformWrapper from "./PlatformWrapper/PlatformWrapper";
2022-02-16 21:21:42 +00:00
const baseClass = "add-hosts-modal";
2022-02-16 21:21:42 +00:00
interface IAddHostsModal {
currentTeamName?: string;
enrollSecret?: string;
isAnyTeamSelected: boolean;
isLoading: boolean;
onCancel: () => void;
openEnrollSecretModal?: () => void;
}
2022-02-16 21:21:42 +00:00
const AddHostsModal = ({
currentTeamName,
enrollSecret,
isAnyTeamSelected,
isLoading,
onCancel,
openEnrollSecretModal,
2022-02-16 21:21:42 +00:00
}: IAddHostsModal): JSX.Element => {
const { isPreviewMode, config } = useContext(AppContext);
const teamDisplayName = (isAnyTeamSelected && currentTeamName) || "Fleet";
const {
data: certificate,
error: fetchCertificateError,
isFetching: isFetchingCertificate,
} = useQuery<string, Error>(
["certificate"],
() => configAPI.loadCertificate(),
{
enabled: !isPreviewMode,
refetchOnWindowFocus: false,
}
);
const onManageEnrollSecretsClick = () => {
onCancel();
openEnrollSecretModal && openEnrollSecretModal();
};
const renderModalContent = () => {
if (isLoading) {
return <Spinner />;
}
if (!enrollSecret) {
return (
<DataError>
<span className="info__data">
You have no enroll secrets.{" "}
{openEnrollSecretModal ? (
2025-09-29 17:10:41 +00:00
<Button onClick={onManageEnrollSecretsClick} variant="inverse">
Manage enroll secrets
</Button>
) : (
"Manage enroll secrets"
)}{" "}
to enroll hosts to <b>{teamDisplayName}</b>.
</span>
</DataError>
);
}
return (
<PlatformWrapper
onCancel={onCancel}
enrollSecret={enrollSecret}
certificate={certificate}
isFetchingCertificate={isFetchingCertificate}
fetchCertificateError={fetchCertificateError}
config={config}
/>
);
};
return (
<Modal
onExit={onCancel}
title="Add hosts"
className={baseClass}
2023-05-30 23:17:14 +00:00
width="large"
>
{renderModalContent()}
</Modal>
);
};
2022-02-16 21:21:42 +00:00
export default AddHostsModal;