import React, { useState } from "react"; import Modal from "components/Modal"; import Button from "components/buttons/Button"; // @ts-ignore import InputField from "components/forms/fields/InputField"; import { ITeam } from "interfaces/team"; import { IEnrollSecret } from "interfaces/enroll_secret"; interface IAddSecretModal { selectedTeam: number; onSaveSecret: (newEnrollSecret: string) => void; teams: ITeam[]; toggleSecretEditorModal: () => void; selectedSecret: IEnrollSecret | undefined; } const baseClass = "secret-editor-modal"; const randomSecretGenerator = () => { const randomChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; let result = ""; for (let i = 0; i < 32; i += 1) { result += randomChars.charAt( Math.floor(Math.random() * randomChars.length) ); } return result; }; const SecretEditorModal = ({ onSaveSecret, selectedTeam, teams, toggleSecretEditorModal, selectedSecret, }: IAddSecretModal): JSX.Element => { const [enrollSecretString, setEnrollSecretString] = useState( selectedSecret ? selectedSecret.secret : randomSecretGenerator() ); const [errors, setErrors] = useState<{ [key: string]: string }>({}); const renderTeam = () => { if (typeof selectedTeam === "string") { selectedTeam = parseInt(selectedTeam, 10); } if (selectedTeam === 0) { return { name: "No team" }; } return teams.find((team) => team.id === selectedTeam); }; const onSecretChange = (value: string) => { if (value.length < 32) { setErrors({ secret: "Secret", }); } else { setErrors({}); } setEnrollSecretString(value); }; const onSaveSecretClick = () => { if (enrollSecretString.length < 32) { setErrors({ secret: "Secret", }); } else { setErrors({}); onSaveSecret(enrollSecretString); } }; return (
Create or edit the generated secret to enroll hosts to{" "} {renderTeam()?.name}:
); }; export default SecretEditorModal;