import React, { useContext, useEffect, useState } from 'react'; import { Grid, Select, MenuItem, Box, Tooltip, Typography, type SelectChangeEvent, CircularProgress, Stack, Alert, } from '@mui/material'; import { Link } from '@mui/icons-material'; import RobotAvatar from '../RobotAvatar'; import { AppContext, type UseAppStoreType } from '../../contexts/AppContext'; import { useTheme } from '@emotion/react'; import { useTranslation } from 'react-i18next'; import { FederationContext, type UseFederationStoreType } from '../../contexts/FederationContext'; import { Coordinator } from '../../models'; interface SelectCoordinatorProps { coordinatorAlias: string; setCoordinatorAlias: (coordinatorAlias: string) => void; } const SelectCoordinator: React.FC = ({ coordinatorAlias, setCoordinatorAlias, }) => { const { setOpen } = useContext(AppContext); const { federation } = useContext(FederationContext); const theme = useTheme(); const { t } = useTranslation(); const [coordinator, setCoordinator] = useState(); const onClickCurrentCoordinator = function (shortAlias: string): void { setOpen((open) => { return { ...open, coordinator: shortAlias }; }); }; const handleCoordinatorChange = (e: SelectChangeEvent): void => { setCoordinatorAlias(e.target.value); }; useEffect(() => { const selectedCoordinator = federation.getCoordinator(coordinatorAlias); if (selectedCoordinator) setCoordinator(selectedCoordinator); }, [coordinatorAlias]); return ( {coordinator?.info && !coordinator?.info?.swap_enabled && ( {t('This coordinator does not support on-chain swaps.')} )} { onClickCurrentCoordinator(coordinatorAlias); }} > {(coordinator?.loadingInfo || coordinator?.loadingLimits) && ( )}  {t('Maker')[0]} {((coordinator?.info?.maker_fee ?? 0) * 100).toFixed(3)}%  {t('Taker')[0]} {((coordinator?.info?.taker_fee ?? 0) * 100).toFixed(3)}% {' '} {coordinator?.info?.swap_enabled ? `${(coordinator?.info?.current_swap_fee_rate ?? 0).toFixed(1)}%` : t('Disabled')} ); }; export default SelectCoordinator;