import { IconAlertTriangle } from "@tabler/icons-react"; import { useQueryClient } from "@tanstack/react-query"; import EasyModal, { type InnerModalProps } from "ez-modal-react"; import { Field, Form, Formik } from "formik"; import { type ReactNode, useState } from "react"; import { Alert } from "react-bootstrap"; import Modal from "react-bootstrap/Modal"; import { type Certificate, createCertificate, uploadCertificate, validateCertificate } from "src/api/backend"; import { Button } from "src/components"; import { T } from "src/locale"; import { validateString } from "src/modules/Validations"; import { showObjectSuccess } from "src/notifications"; const showCustomCertificateModal = () => { EasyModal.show(CustomCertificateModal); }; const CustomCertificateModal = EasyModal.create(({ visible, remove }: InnerModalProps) => { const queryClient = useQueryClient(); const [errorMsg, setErrorMsg] = useState(null); const [isSubmitting, setIsSubmitting] = useState(false); const onSubmit = async (values: any, { setSubmitting }: any) => { if (isSubmitting) return; setIsSubmitting(true); setErrorMsg(null); try { const { niceName, provider, certificate, certificateKey, intermediateCertificate } = values; const formData = new FormData(); formData.append("certificate", certificate); formData.append("certificate_key", certificateKey); if (intermediateCertificate !== null) { formData.append("intermediate_certificate", intermediateCertificate); } // Validate await validateCertificate(formData); // Create certificate, as other without anything else const cert = await createCertificate({ niceName, provider } as Certificate); // Upload the certificates to the created certificate await uploadCertificate(cert.id, formData); // Success showObjectSuccess("certificate", "saved"); remove(); } catch (err: any) { setErrorMsg(); } queryClient.invalidateQueries({ queryKey: ["certificates"] }); setIsSubmitting(false); setSubmitting(false); }; return ( {() => (
setErrorMsg(null)} dismissible> {errorMsg}

{({ field, form }: any) => (
{form.errors.niceName ? (
{form.errors.niceName && form.touched.niceName ? form.errors.niceName : null}
) : null}
)}
{({ field, form }: any) => (
{ form.setFieldValue( field.name, event.currentTarget.files?.length ? event.currentTarget.files[0] : null, ); }} /> {form.errors.certificateKey ? (
{form.errors.certificateKey && form.touched.certificateKey ? form.errors.certificateKey : null}
) : null}
)}
{({ field, form }: any) => (
{ form.setFieldValue( field.name, event.currentTarget.files?.length ? event.currentTarget.files[0] : null, ); }} /> {form.errors.certificate ? (
{form.errors.certificate && form.touched.certificate ? form.errors.certificate : null}
) : null}
)}
{({ field, form }: any) => (
{ form.setFieldValue( field.name, event.currentTarget.files?.length ? event.currentTarget.files[0] : null, ); }} /> {form.errors.intermediateCertificate ? (
{form.errors.intermediateCertificate && form.touched.intermediateCertificate ? form.errors.intermediateCertificate : null}
) : null}
)}
)}
); }); export { showCustomCertificateModal };