import React, {useEffect, useState} from 'react' import type { FormProps} from 'antd' import {FloatButton} from 'antd' import {Empty, Flex, message, Skeleton} from 'antd' import type {Domain, Watchlist} from '../../utils/api' import {addDomainToWatchlist} from '../../utils/api' import {getDomain} from '../../utils/api' import type {AxiosError} from 'axios' import {t} from 'ttag' import type { FieldType} from '../../components/search/DomainSearchBar' import {DomainSearchBar} from '../../components/search/DomainSearchBar' import {DomainResult} from '../../components/search/DomainResult' import {showErrorAPI} from '../../utils/functions/showErrorAPI' import {useNavigate, useParams} from 'react-router-dom' import {PlusOutlined} from '@ant-design/icons' import WatchlistSelectionModal from '../../components/tracking/watchlist/WatchlistSelectionModal' export default function DomainSearchPage() { const {query} = useParams() const [domain, setDomain] = useState() const domainLdhName = domain?.ldhName const [loading, setLoading] = useState(false) const [addToWatchlistModal, setAddToWatchlistModal] = useState(false) const [messageApi, contextHolder] = message.useMessage() const navigate = useNavigate() const onFinish: FormProps['onFinish'] = (values) => { navigate('/search/domain/' + values.ldhName) if (loading) return setLoading(true) setDomain(null) getDomain(values.ldhName, values.isRefreshForced).then(d => { setDomain(d) messageApi.success(t`Found !`) }).catch((e: AxiosError) => { setDomain(undefined) showErrorAPI(e, messageApi) }).finally(() => setLoading(false)) } useEffect(() => { if (query === undefined) return onFinish({ldhName: query, isRefreshForced: false}) }, []) const addToWatchlist = async (watchlist: Watchlist) => { await addDomainToWatchlist(watchlist, domain!.ldhName).then(() => { setAddToWatchlistModal(false) const ldhName = domain?.ldhName messageApi.success(t`${ldhName} added to ${watchlist.name}`) }).catch((e: AxiosError) => { showErrorAPI(e, messageApi) }) } return <> {contextHolder} { (domain != null) && (!domain.deleted ? : ) } {domain && } onClick={() => setAddToWatchlistModal(true)} /> } setAddToWatchlistModal(false), onClose: () => setAddToWatchlistModal(false), cancelText: t`Cancel`, okText: t`Add` }} /> }