diff --git a/assets/components/tracking/DeleteWatchlistButton.tsx b/assets/components/tracking/DeleteWatchlistButton.tsx
new file mode 100644
index 0000000..cecac54
--- /dev/null
+++ b/assets/components/tracking/DeleteWatchlistButton.tsx
@@ -0,0 +1,22 @@
+import {Popconfirm, theme, Typography} from "antd";
+import {t} from "ttag";
+import {deleteWatchlist} from "../../utils/api";
+import {DeleteFilled} from "@ant-design/icons";
+import React from "react";
+import {Watchlist} from "../../pages/tracking/WatchlistPage";
+
+export function DeleteWatchlistButton({watchlist, onDelete}: { watchlist: Watchlist, onDelete: () => void }) {
+ const {token} = theme.useToken()
+
+ return deleteWatchlist(watchlist.token).then(onDelete)}
+ okText={t`Yes`}
+ cancelText={t`No`}
+ okButtonProps={{danger: true}}>
+
+
+
+
+}
\ No newline at end of file
diff --git a/assets/components/tracking/UpdateWatchlistButton.tsx b/assets/components/tracking/UpdateWatchlistButton.tsx
new file mode 100644
index 0000000..7e3686d
--- /dev/null
+++ b/assets/components/tracking/UpdateWatchlistButton.tsx
@@ -0,0 +1,67 @@
+import {Button, Drawer, Form, Typography} from "antd";
+import {t} from "ttag";
+import {WatchlistForm} from "./WatchlistForm";
+import React, {useState} from "react";
+import {Watchlist} from "../../pages/tracking/WatchlistPage";
+import {EditOutlined} from "@ant-design/icons";
+import {Connector} from "../../utils/api/connectors";
+
+export function UpdateWatchlistButton({watchlist, onUpdateWatchlist, connectors}: {
+ watchlist: Watchlist,
+ onUpdateWatchlist: (values: { domains: string[], emailTriggers: string[], token: string }) => Promise,
+ connectors: (Connector & { id: string })[]
+}) {
+
+ const [form] = Form.useForm()
+ const [open, setOpen] = useState(false)
+ const [loading, setLoading] = useState(false)
+
+
+ const showDrawer = () => {
+ setOpen(true)
+ }
+
+ const onClose = () => {
+ setOpen(false)
+ setLoading(false)
+ }
+
+ return <>
+
+ {
+ showDrawer()
+ form.setFields([
+ {name: 'token', value: watchlist.token},
+ {name: 'name', value: watchlist.name},
+ {name: 'connector', value: watchlist.connector?.id},
+ {name: 'domains', value: watchlist.domains.map(d => d.ldhName)},
+ {name: 'emailTriggers', value: watchlist.triggers?.map(t => t.event)},
+ ])
+ }}/>
+
+ {t`Cancel`}}
+ >
+ {
+ setLoading(true)
+ onUpdateWatchlist(values).then(onClose).catch(() => setLoading(false))
+ }}
+ connectors={connectors}
+ isCreation={false}
+ />
+
+ >
+
+}
\ No newline at end of file
diff --git a/assets/components/tracking/ViewDiagramWatchlistButton.tsx b/assets/components/tracking/ViewDiagramWatchlistButton.tsx
new file mode 100644
index 0000000..241f6ad
--- /dev/null
+++ b/assets/components/tracking/ViewDiagramWatchlistButton.tsx
@@ -0,0 +1,40 @@
+import {Button, Modal, Space, Typography} from "antd"
+import {t} from "ttag"
+import React, {useState} from "react"
+import {Watchlist} from "../../pages/tracking/WatchlistPage"
+import {ApartmentOutlined} from "@ant-design/icons"
+
+export function ViewDiagramWatchlistButton({watchlist}: { watchlist: Watchlist }) {
+ const [open, setOpen] = useState(false)
+
+ return <>
+
+ setOpen(true)}/>
+
+
+
+
+
+
+ }
+ onOk={() => setOpen(false)}
+ onCancel={() => setOpen(false)}
+ width='80%'
+ >
+
+
+ >
+
+}
\ No newline at end of file
diff --git a/assets/components/tracking/WatchlistsList.tsx b/assets/components/tracking/WatchlistsList.tsx
index ba32b8a..1d36b04 100644
--- a/assets/components/tracking/WatchlistsList.tsx
+++ b/assets/components/tracking/WatchlistsList.tsx
@@ -1,16 +1,15 @@
-import {Button, Card, Divider, Drawer, Form, Popconfirm, Space, Table, Tag, theme, Typography} from "antd";
+import {Card, Divider, Space, Table, Tag, Typography} from "antd";
import {t} from "ttag";
-import {deleteWatchlist} from "../../utils/api";
-import {CalendarFilled, DeleteFilled, DisconnectOutlined, EditOutlined, LinkOutlined} from "@ant-design/icons";
-import React, {useState} from "react";
+import {CalendarFilled, 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";
-import {WatchlistForm} from "./WatchlistForm";
import {Connector} from "../../utils/api/connectors";
-
-const {useToken} = theme;
+import {UpdateWatchlistButton} from "./UpdateWatchlistButton";
+import {DeleteWatchlistButton} from "./DeleteWatchlistButton";
+import {ViewDiagramWatchlistButton} from "./ViewDiagramWatchlistButton";
export function WatchlistsList({watchlists, onDelete, onUpdateWatchlist, connectors}: {
watchlists: Watchlist[],
@@ -18,10 +17,9 @@ export function WatchlistsList({watchlists, onDelete, onUpdateWatchlist, connect
onUpdateWatchlist: (values: { domains: string[], emailTriggers: string[], token: string }) => Promise,
connectors: (Connector & { id: string })[]
}) {
- const {token} = useToken()
const sm = useBreakpoint('sm')
const domainEventTranslated = domainEvent()
- const [form] = Form.useForm()
+
const columns = [
{
@@ -34,17 +32,6 @@ export function WatchlistsList({watchlists, onDelete, onUpdateWatchlist, connect
}
]
- const [open, setOpen] = useState(false)
- const [loading, setLoading] = useState(false)
-
- const showDrawer = () => {
- setOpen(true)
- }
-
- const onClose = () => {
- setOpen(false)
- setLoading(false)
- }
return <>
{watchlists.map(watchlist =>
@@ -66,57 +53,22 @@ export function WatchlistsList({watchlists, onDelete, onUpdateWatchlist, connect
size='small'
style={{width: '100%'}}
extra={
-
-
-
-
- {
- showDrawer()
- form.setFields([
- {name: 'token', value: watchlist.token},
- {name: 'name', value: watchlist.name},
- {name: 'connector', value: watchlist.connector?.id},
- {name: 'domains', value: watchlist.domains.map(d => d.ldhName)},
- {name: 'emailTriggers', value: watchlist.triggers?.map(t => t.event)},
- ])
- }}/>
+
+
+
+
+
- {t`Cancel`}}
- >
- {
- setLoading(true)
- onUpdateWatchlist(values).then(onClose).catch(() => setLoading(false))
- }}
- connectors={connectors}
- isCreation={false}
- />
-
+
+
+
- deleteWatchlist(watchlist.token).then(onDelete)}
- okText={t`Yes`}
- cancelText={t`No`}
- okButtonProps={{danger: true}}>
-
-
-
-
}
>