import React, { useState } from 'react'; import Modal from '../common/Modal'; import { useAddDomain } from '../../services/domains'; import { isValidUrl } 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 insertedURLs = newDomain.split('\n'); const domainsTobeAdded:string[] = []; const invalidDomains:string[] = []; insertedURLs.forEach((url) => { const theURL = url.trim(); if (isValidUrl(theURL)) { const domURL = new URL(theURL); const isDomain = domURL.pathname === '/'; if (isDomain && !existingDomains.includes(domURL.host)) { domainsTobeAdded.push(domURL.host); } if (!isDomain && !existingDomains.includes(domURL.href)) { const cleanedURL = domURL.href.replace('https://', '').replace('http://', '').replace(/^\/+|\/+$/g, ''); domainsTobeAdded.push(cleanedURL); } } else { invalidDomains.push(theURL); } }); if (invalidDomains.length > 0) { setNewDomainError(`Please Insert Valid Website URL. ${invalidDomains.length > 1 ? `Invalid URLs: ${invalidDomains.join(', ')}` : ''}`); } else if (domainsTobeAdded.length > 0) { console.log('domainsTobeAdded :', domainsTobeAdded); addMutate(domainsTobeAdded); } }; const handleDomainInput = (e:React.ChangeEvent) => { if (e.currentTarget.value === '' && newDomainError) { setNewDomainError(''); } setNewDomain(e.currentTarget.value); }; return ( { closeModal(false); }} title={'Add New Domain'}>

Website URL(s)

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