diff --git a/assets/pages/tracking/WatchlistPage.tsx b/assets/pages/tracking/WatchlistPage.tsx index cb83bee..159f200 100644 --- a/assets/pages/tracking/WatchlistPage.tsx +++ b/assets/pages/tracking/WatchlistPage.tsx @@ -23,6 +23,33 @@ export type Watchlist = { createdAt: string } +type FormValuesType = { + name?: string + domains: string[], + triggers: string[] + connector?: string, + dsn?: string[] +} + +const getRequestDataFromForm = (values: FormValuesType) => { + const domainsURI = values.domains.map(d => '/api/domains/' + d.toLowerCase()) + let triggers = values.triggers.map(t => ({event: t, action: 'email'})) + + if (values.dsn !== undefined) { + triggers = [...triggers, ...values.triggers.map(t => ({ + event: t, + action: 'chat' + }))] + } + return { + name: values.name, + domains: domainsURI, + triggers, + connector: values.connector !== undefined ? ('/api/connectors/' + values.connector) : undefined, + dsn: values.dsn + } +} + export default function WatchlistPage() { const [form] = Form.useForm() @@ -30,27 +57,9 @@ export default function WatchlistPage() { const [watchlists, setWatchlists] = useState() const [connectors, setConnectors] = useState<(Connector & { id: string })[] | null>() - const onCreateWatchlist = (values: { - name?: string - domains: string[], - triggers: string[] - connector?: string, - dsn?: string[] - }) => { - const domainsURI = values.domains.map(d => '/api/domains/' + d.toLowerCase()) - let triggers = values.triggers.map(t => ({event: t, action: 'email'})) - if (values.dsn !== undefined) triggers = [...triggers, ...values.triggers.map(t => ({ - event: t, - action: 'chat' - }))] + const onCreateWatchlist = (values: FormValuesType) => { - postWatchlist({ - name: values.name, - domains: domainsURI, - triggers, - connector: values.connector !== undefined ? ('/api/connectors/' + values.connector) : undefined, - dsn: values.dsn - }).then((w) => { + postWatchlist(getRequestDataFromForm(values)).then((w) => { form.resetFields() refreshWatchlists() messageApi.success(t`Watchlist created !`) @@ -59,35 +68,16 @@ export default function WatchlistPage() { }) } - const onUpdateWatchlist = async (values: { - token: string - name?: string - domains: string[], - triggers: string[] - connector?: string, - dsn?: string[] - }) => { - const domainsURI = values.domains.map(d => '/api/domains/' + d.toLowerCase()) - let triggers = values.triggers.map(t => ({event: t, action: 'email'})) - if (values.dsn !== undefined) triggers = [...triggers, ...values.triggers.map(t => ({ - event: t, - action: 'chat' - }))] - - return putWatchlist({ + const onUpdateWatchlist = async (values: FormValuesType & { token: string }) => putWatchlist({ token: values.token, - name: values.name, - domains: domainsURI, - triggers, - connector: values.connector !== undefined ? ('/api/connectors/' + values.connector) : undefined, - dsn: values.dsn - }).then((w) => { - refreshWatchlists() - messageApi.success(t`Watchlist updated !`) - }).catch((e: AxiosError) => { - throw showErrorAPI(e, messageApi) - }) - } + ...getRequestDataFromForm(values) + } + ).then((w) => { + refreshWatchlists() + messageApi.success(t`Watchlist updated !`) + }).catch((e: AxiosError) => { + throw showErrorAPI(e, messageApi) + }) const refreshWatchlists = () => getWatchlists().then(w => { setWatchlists(w['hydra:member']) diff --git a/translations/translations.pot b/translations/translations.pot index b1e43d4..7dbcbda 100644 --- a/translations/translations.pot +++ b/translations/translations.pot @@ -547,15 +547,15 @@ msgstr "" msgid "Create a Connector" msgstr "" -#: assets/pages/tracking/WatchlistPage.tsx:56 +#: assets/pages/tracking/WatchlistPage.tsx:65 msgid "Watchlist created !" msgstr "" -#: assets/pages/tracking/WatchlistPage.tsx:86 +#: assets/pages/tracking/WatchlistPage.tsx:77 msgid "Watchlist updated !" msgstr "" -#: assets/pages/tracking/WatchlistPage.tsx:112 +#: assets/pages/tracking/WatchlistPage.tsx:102 msgid "Create a Watchlist" msgstr ""