From 0c2148d889a8078f079b8b469e6dcda83b44ac8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Gangloff?= Date: Wed, 15 Oct 2025 19:52:44 +0200 Subject: [PATCH] refactor: simplify Watchlist triggers --- .../watchlist/UpdateWatchlistButton.tsx | 4 +- .../tracking/watchlist/WatchlistCard.tsx | 13 ++- .../tracking/watchlist/WatchlistForm.tsx | 50 +--------- .../tracking/watchlist/WatchlistsList.tsx | 2 +- assets/pages/tracking/WatchlistPage.tsx | 28 +----- assets/utils/api/index.ts | 12 +-- assets/utils/api/watchlist.ts | 19 +--- migrations/Version20251015165917.php | 53 +++++++++++ src/Config/TriggerAction.php | 9 -- src/Entity/WatchList.php | 67 ++++++------- src/Entity/WatchListTrigger.php | 94 ------------------- .../SendDomainEventNotifHandler.php | 72 ++++++-------- src/Repository/EventTriggerRepository.php | 43 --------- src/Service/InfluxdbService.php | 5 +- tests/Controller/WatchlistControllerTest.php | 1 - tests/State/WatchListUpdateProcessorTest.php | 13 +-- 16 files changed, 136 insertions(+), 349 deletions(-) create mode 100644 migrations/Version20251015165917.php delete mode 100644 src/Config/TriggerAction.php delete mode 100644 src/Entity/WatchListTrigger.php delete mode 100644 src/Repository/EventTriggerRepository.php diff --git a/assets/components/tracking/watchlist/UpdateWatchlistButton.tsx b/assets/components/tracking/watchlist/UpdateWatchlistButton.tsx index 68c36d3..2ca47bb 100644 --- a/assets/components/tracking/watchlist/UpdateWatchlistButton.tsx +++ b/assets/components/tracking/watchlist/UpdateWatchlistButton.tsx @@ -8,7 +8,7 @@ import type {Watchlist} from '../../../utils/api' export function UpdateWatchlistButton({watchlist, onUpdateWatchlist, connectors}: { watchlist: Watchlist - onUpdateWatchlist: (values: { domains: string[], triggers: string[], token: string }) => Promise + onUpdateWatchlist: (values: { domains: string[], trackedEvents: string[], token: string }) => Promise connectors: Array }) { const [form] = Form.useForm() @@ -35,7 +35,7 @@ export function UpdateWatchlistButton({watchlist, onUpdateWatchlist, connectors} {name: 'name', value: watchlist.name}, {name: 'connector', value: watchlist.connector?.id}, {name: 'domains', value: watchlist.domains.map(d => d.ldhName)}, - {name: 'triggers', value: [...new Set(watchlist.triggers?.map(t => t.event))]}, + {name: 'trackedEvents', value: watchlist.trackedEvents}, {name: 'dsn', value: watchlist.dsn} ]) }} diff --git a/assets/components/tracking/watchlist/WatchlistCard.tsx b/assets/components/tracking/watchlist/WatchlistCard.tsx index d07a66e..1798306 100644 --- a/assets/components/tracking/watchlist/WatchlistCard.tsx +++ b/assets/components/tracking/watchlist/WatchlistCard.tsx @@ -15,7 +15,7 @@ import type {Watchlist} from '../../../utils/api' export function WatchlistCard({watchlist, onUpdateWatchlist, connectors, onDelete}: { watchlist: Watchlist - onUpdateWatchlist: (values: { domains: string[], triggers: string[], token: string }) => Promise + onUpdateWatchlist: (values: { domains: string[], trackedEvents: string[], token: string }) => Promise connectors: Array onDelete: () => void }) { @@ -64,13 +64,12 @@ export function WatchlistCard({watchlist, onUpdateWatchlist, connectors, onDelet {watchlist.domains.map(d => )} - {watchlist.triggers?.filter(t => t.action === 'email') - .map(t => - - {rdapEventNameTranslated[t.event as keyof typeof rdapEventNameTranslated]} + + {rdapEventNameTranslated[t as keyof typeof rdapEventNameTranslated]} )} diff --git a/assets/components/tracking/watchlist/WatchlistForm.tsx b/assets/components/tracking/watchlist/WatchlistForm.tsx index afdf1ba..a2bddb0 100644 --- a/assets/components/tracking/watchlist/WatchlistForm.tsx +++ b/assets/components/tracking/watchlist/WatchlistForm.tsx @@ -2,13 +2,12 @@ import type { FormInstance, SelectProps} from 'antd' import {Button, Form, Input, Select, Space, Tag, Tooltip, Typography} from 'antd' import {t} from 'ttag' import {ApiOutlined, MinusCircleOutlined, PlusOutlined} from '@ant-design/icons' -import React, {useState} from 'react' +import React from 'react' import type {Connector} from '../../../utils/api/connectors' import {rdapEventDetailTranslation, rdapEventNameTranslation} from '../../../utils/functions/rdapTranslation' import {actionToColor} from '../../../utils/functions/actionToColor' import {actionToIcon} from '../../../utils/functions/actionToIcon' import type {EventAction, Watchlist} from '../../../utils/api' -import { createWatchlistTrigger, deleteWatchlistTrigger} from '../../../utils/api' import {formItemLayoutWithOutLabel} from "../../../utils/providers" type TagRender = SelectProps['tagRender'] @@ -24,10 +23,10 @@ const formItemLayout = { } } -export function WatchlistForm({form, connectors, onFinish, isCreation, watchList}: { +export function WatchlistForm({form, connectors, onFinish, isCreation}: { form: FormInstance connectors: Array - onFinish: (values: { domains: string[], triggers: string[], token: string }) => void + onFinish: (values: { domains: string[], trackedEvents: string[], token: string }) => void isCreation: boolean, watchList?: Watchlist, }) { @@ -61,48 +60,12 @@ export function WatchlistForm({form, connectors, onFinish, isCreation, watchList ) } - const [triggersLoading, setTriggersLoading] = useState(false) - - const createTrigger = async (event: string) => { - if (isCreation) return - - setTriggersLoading(true) - await createWatchlistTrigger(watchList!.token, { - watchList: watchList!['@id'], - event, - action: 'email', - }) - await createWatchlistTrigger(watchList!.token, { - watchList: watchList!['@id'], - event, - action: 'chat', - }) - setTriggersLoading(false) - } - - const removeTrigger = async (event: string) => { - if (isCreation) return - - setTriggersLoading(true) - await deleteWatchlistTrigger(watchList!.token, { - watchList: watchList!['@id'], - event, - action: 'email', - }) - await deleteWatchlistTrigger(watchList!.token, { - watchList: watchList!['@id'], - event, - action: 'chat', - }) - setTriggersLoading(false) - } - return (