diff --git a/src/components/NotAvailableMarker.tsx b/src/components/NotAvailableMarker.tsx index bbbd797..d8f9afa 100644 --- a/src/components/NotAvailableMarker.tsx +++ b/src/components/NotAvailableMarker.tsx @@ -1,4 +1,4 @@ -import { cn } from '../helpers/cn.helper'; +import { cn } from '../helpers/className/cn.helper'; const NotAvailableMarker: React.FC<{ className?: string; diff --git a/src/components/SearchForm.tsx b/src/components/SearchForm.tsx index e30d1f3..a031342 100644 --- a/src/components/SearchForm.tsx +++ b/src/components/SearchForm.tsx @@ -1,7 +1,9 @@ import { FormEvent, useEffect, useRef, useState } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useHistoryModal } from '../providers/HistoryProvider'; -import { isDomainValid } from '../helpers/isDomainValid.helper'; +import { isDomainValid } from '../helpers/domain/isDomainValid.helper'; +import { domainPipe } from '../helpers/domain/domainPipe'; +import { extractDomain } from '../helpers/domain/extractDomain'; const SearchForm = () => { const [searchParams, setSearchParams] = useSearchParams(); @@ -9,7 +11,7 @@ const SearchForm = () => { const navigate = useNavigate(); const inputRef = useRef(null); const { historyPush } = useHistoryModal(); - const [isValid, setIsValid] = useState(false); + const [isValid, setIsValid] = useState(true); useEffect(() => { window.addEventListener('keyup', handleKeyUp); @@ -18,18 +20,27 @@ const SearchForm = () => { }, []); useEffect(() => { - setIsValid(false); + if (!searchQuery) { + setIsValid(true); + return; + } + const transformedDomain = domainPipe(extractDomain)(searchQuery); - if (isDomainValid(searchQuery)) setIsValid(true); + setIsValid(isDomainValid(transformedDomain)); }, [searchQuery]); const handleSubmit = (event: FormEvent): void => { event.preventDefault(); - if (searchParams.get('domain') === searchQuery && !isValid) return; - historyPush(searchQuery); - setSearchParams({ domain: searchQuery }); - navigate(`/results?domain=${encodeURIComponent(searchQuery)}`); + const transformedDomain = domainPipe(extractDomain)(searchQuery); + const isValid = isDomainValid(transformedDomain); + if (searchParams.get('domain') === transformedDomain || !isValid) { + return; + } + + historyPush(transformedDomain); + setSearchParams({ domain: transformedDomain }); + navigate(`/results?domain=${encodeURIComponent(transformedDomain)}`); setTimeout(() => window.scroll(0, 0), 50); }; @@ -42,13 +53,15 @@ const SearchForm = () => { return (