import React, {useEffect, useState} from "react" import type {ModalProps} from "antd" import {Tag, Tooltip} from "antd" import {Flex, Modal, Select, Typography} from "antd" import type {Domain, Watchlist} from "../../../utils/api" import {getWatchlists} from "../../../utils/api" import {t} from 'ttag' import {DomainToTag} from "../../../utils/functions/DomainToTag" import {EllipsisOutlined} from '@ant-design/icons' const MAX_DOMAIN_TAGS = 25 function WatchlistOption({watchlist}: {watchlist: Watchlist}) { let domains = watchlist.domains let rest: Domain[]|undefined = undefined if (domains.length > MAX_DOMAIN_TAGS) { rest = domains.slice(MAX_DOMAIN_TAGS) domains = domains.slice(0, MAX_DOMAIN_TAGS) } return {watchlist.name} {domains.map(d => )} {rest && )}> } color='processing'> {t`${rest.length} more`} } } interface WatchlistSelectionModalProps { onFinish: (watchlist: Watchlist) => Promise|void description?: string open?: boolean modalProps?: Partial } export default function WatchlistSelectionModal(props: WatchlistSelectionModalProps) { const [watchlists, setWatchlists] = useState() const [selectedWatchlist, setSelectedWatchlist] = useState() const [validationLoading, setValidationLoading] = useState(false) useEffect(() => { if (props.open && !watchlists) { getWatchlists().then(list => setWatchlists(list["hydra:member"])) } }, [props.open]) const onFinish = () => { const promise = props.onFinish(selectedWatchlist as Watchlist) if (promise) { setValidationLoading(true) promise.finally(() => { setSelectedWatchlist(undefined) setValidationLoading(false) }) } else { setSelectedWatchlist(undefined) } } return { props.description || t`Select one of your available watchlists` }