import React, { useState } from 'react'; import Modal from '../common/Modal'; import { useAddDomain } from '../../services/domains'; import { isValidDomain } from '../../utils/client/validators'; type AddDomainProps = { domains: DomainType[], closeModal: Function } const AddDomain = ({ closeModal, domains = [] }: AddDomainProps) => { const [newDomain, setNewDomain] = useState(''); const [newDomainError, setNewDomainError] = useState(''); const { mutate: addMutate, isLoading: isAdding } = useAddDomain(() => closeModal()); const addDomain = () => { setNewDomainError(''); const existingDomains = domains.map((d) => d.domain); const insertedDomains = newDomain.split('\n'); const domainsTobeAdded:string[] = []; const invalidDomains:string[] = []; insertedDomains.forEach((dom) => { const domain = dom.trim(); if (isValidDomain(domain)) { if (!existingDomains.includes(domain)) { domainsTobeAdded.push(domain); } } else { invalidDomains.push(domain); } }); if (invalidDomains.length > 0) { setNewDomainError(`Please Insert Valid Domain names. Invalid Domains: ${invalidDomains.join(', ')}`); } else if (domainsTobeAdded.length > 0) { // TODO: Domain Action addMutate(domainsTobeAdded); } }; const handleDomainInput = (e:React.ChangeEvent) => { if (e.currentTarget.value === '' && newDomainError) { setNewDomainError(''); } setNewDomain(e.currentTarget.value); }; return ( { closeModal(false); }} title={'Add New Domain'}>

Domain Names

{newDomainError &&
{newDomainError}
}
); }; export default AddDomain;