import {Card, Divider, Popconfirm, Space, Table, Tag, theme, Typography} from "antd"; import {t} from "ttag"; import {deleteWatchlist} from "../../utils/api"; import {CalendarFilled, DeleteFilled, DisconnectOutlined, LinkOutlined} from "@ant-design/icons"; import React from "react"; import useBreakpoint from "../../hooks/useBreakpoint"; import {actionToColor, domainEvent} from "../search/EventTimeline"; import {Watchlist} from "../../pages/tracking/WatchlistPage"; import punycode from "punycode/punycode"; const {useToken} = theme; export function WatchlistsList({watchlists, onDelete}: { watchlists: Watchlist[], onDelete: () => void }) { const {token} = useToken() const sm = useBreakpoint('sm') const domainEventTranslated = domainEvent() const columns = [ { title: t`Domain names`, dataIndex: 'domains' }, { title: t`Tracked events`, dataIndex: 'events' } ] return <> {watchlists.map(watchlist => <> { watchlist.connector ? } color="lime-inverse" title={watchlist.connector.id}/> : } color="default" title={t`This Watchlist is not linked to a Connector.`}/> } {t`Watchlist` + (watchlist.name ? ` (${watchlist.name})` : '')} } size='small' style={{width: '100%'}} extra={ deleteWatchlist(watchlist.token).then(onDelete)} okText={t`Yes`} cancelText={t`No`} okButtonProps={{danger: true}}> } > {punycode.toUnicode(d.ldhName)}), events: watchlist.triggers?.filter(t => t.action === 'email') .map(t => {domainEventTranslated[t.event as keyof typeof domainEventTranslated]} ) }]} {...(sm ? {scroll: {y: 'max-content'}} : {scroll: {y: 240}})} /> )} }