diff --git a/assets/components/tracking/watchlist/WatchlistSelectionModal.tsx b/assets/components/tracking/watchlist/WatchlistSelectionModal.tsx new file mode 100644 index 0000000..f8bd5cf --- /dev/null +++ b/assets/components/tracking/watchlist/WatchlistSelectionModal.tsx @@ -0,0 +1,78 @@ +import React, {useEffect, useState} from "react" +import {Flex, Modal, ModalProps, Select, Tag, Typography} from "antd" +import {getWatchlists, Watchlist} from "../../../utils/api" +import {t} from 'ttag' +import {DomainToTag} from "../../../utils/functions/DomainToTag" + +function WatchlistOption({watchlist}: {watchlist: Watchlist}) { + return + {watchlist.name} + + {watchlist.domains.map(d => )} + + +} + +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(() => { + getWatchlists().then(list => setWatchlists(list["hydra:member"])) + }, []) + + 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` + } + +