diff --git a/src/domains/DomainRow.tsx b/src/domains/DomainRow.tsx index 1a2f67ea..0cb7b5f7 100644 --- a/src/domains/DomainRow.tsx +++ b/src/domains/DomainRow.tsx @@ -1,22 +1,26 @@ -import { FC } from 'react'; +import { FC, useEffect } from 'react'; import { Button, UncontrolledTooltip } from 'reactstrap'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faBan as forbiddenIcon, - faCheck as defaultDomainIcon, + faDotCircle as defaultDomainIcon, + faCheck as checkIcon, + faCircleNotch as loadingStatusIcon, faEdit as editIcon, } from '@fortawesome/free-solid-svg-icons'; -import { ShlinkDomain, ShlinkDomainRedirects } from '../api/types'; +import { ShlinkDomainRedirects } from '../api/types'; import { useToggle } from '../utils/helpers/hooks'; import { OptionalString } from '../utils/utils'; import { SelectedServer } from '../servers/data'; import { supportsDefaultDomainRedirectsEdition } from '../utils/helpers/features'; import { EditDomainRedirectsModal } from './helpers/EditDomainRedirectsModal'; +import { Domain, DomainStatus } from './data'; interface DomainRowProps { - domain: ShlinkDomain; + domain: Domain; defaultRedirects?: ShlinkDomainRedirects; editDomainRedirects: (domain: string, redirects: Partial) => Promise; + checkDomainHealth: (domain: string) => void; selectedServer: SelectedServer; } @@ -32,12 +36,27 @@ const DefaultDomain: FC = () => ( Default domain ); +const StatusIcon: FC<{ status: DomainStatus }> = ({ status }) => { + if (status === 'validating') { + return ; + } -export const DomainRow: FC = ({ domain, editDomainRedirects, defaultRedirects, selectedServer }) => { + return status === 'valid' + ? + : ; +}; + +export const DomainRow: FC = ( + { domain, editDomainRedirects, checkDomainHealth, defaultRedirects, selectedServer }, +) => { const [ isOpen, toggle ] = useToggle(); - const { domain: authority, isDefault, redirects } = domain; + const { domain: authority, isDefault, redirects, status } = domain; const canEditDomain = !isDefault || supportsDefaultDomainRedirectsEdition(selectedServer); + useEffect(() => { + checkDomainHealth(domain.domain); + }, []); + return ( {isDefault ? : ''} @@ -51,6 +70,9 @@ export const DomainRow: FC = ({ domain, editDomainRedirects, def {redirects?.invalidShortUrlRedirect ?? } + + +