import {Card, Divider, message, Popconfirm, Space, theme, Typography} from 'antd' import {jt, t} from 'ttag' import {DeleteFilled} from '@ant-design/icons' import React from 'react' import type {Connector} from '../../../utils/api/connectors' import {ConnectorProvider, deleteConnector} from '../../../utils/api/connectors' import {providersConfig} from "../../../utils/providers" const {useToken} = theme export type ConnectorElement = Connector & { id: string, createdAt: string, watchlistCount: number } export function ConnectorsList({connectors, onDelete}: { connectors: ConnectorElement[], onDelete: () => void }) { const {token} = useToken() const [messageApi, contextHolder] = message.useMessage() const onConnectorDelete = async (connector: ConnectorElement) => await deleteConnector(connector.id) .then(onDelete) .catch(() => messageApi.error(t`An error occurred while deleting the Connector. Make sure it is not used in any Watchlist`)) return ( <> {connectors.map(connector => { const createdAt = {new Date(connector.createdAt).toLocaleString()} const {watchlistCount} = connector const connectorName = Object.keys(ConnectorProvider).find(p => ConnectorProvider[p as keyof typeof ConnectorProvider] === connector.provider) return {t`Connector ${connectorName}`}{connector.id} } size='small' style={{width: '100%'}} extra={ await onConnectorDelete(connector)} okText={t`Yes`} cancelText={t`No`} > } > {contextHolder} {jt`Creation date: ${createdAt}`} {t`Used in: ${watchlistCount} Watchlist`} {t`You can stop using a connector at any time. To delete a connector, you must remove it from each linked Watchlist. The creation date corresponds to the date on which you consented to the creation of the connector and on which you declared in particular that you fulfilled the conditions of use of the supplier's API, waived the right of withdrawal and were of the minimum age to consent to these conditions.`}   {providersConfig[connector.provider].tosLink && {t`The Provider’s conditions are accessible by following this hyperlink.`} } }/> } )} ) }