import cn from "classnames"; import { Field, useFormikContext } from "formik"; import { DNSProviderFields, DomainNamesField } from "src/components"; import { intl } from "src/locale"; interface Props { forHttp?: boolean; // the sslForced, http2Support, hstsEnabled, hstsSubdomains fields forceDNSForNew?: boolean; requireDomainNames?: boolean; // used for streams color?: string; } export function SSLOptionsFields({ forHttp = true, forceDNSForNew, requireDomainNames, color = "bg-cyan" }: Props) { const { values, setFieldValue } = useFormikContext(); const v: any = values || {}; const newCertificate = v?.certificateId === "new"; const hasCertificate = newCertificate || (v?.certificateId && v?.certificateId > 0); const { sslForced, http2Support, hstsEnabled, hstsSubdomains, meta } = v; const { dnsChallenge } = meta || {}; if (forceDNSForNew && newCertificate && !dnsChallenge) { setFieldValue("meta.dnsChallenge", true); } const handleToggleChange = (e: any, fieldName: string) => { setFieldValue(fieldName, e.target.checked); if (fieldName === "meta.dnsChallenge" && !e.target.checked) { setFieldValue("meta.dnsProvider", undefined); setFieldValue("meta.dnsProviderCredentials", undefined); setFieldValue("meta.propagationSeconds", undefined); } }; const toggleClasses = "form-check-input"; const toggleEnabled = cn(toggleClasses, color); const getHttpOptions = () => (