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`
}
}