import { Avatar, List, ListItem, ListItemAvatar, ListItemText, DialogTitle, Dialog, DialogActions, Button, DialogContent, makeStyles, CircularProgress, } from '@material-ui/core'; import AddIcon from '@material-ui/icons/Add'; import { useState } from 'react'; import SearchIcon from '@material-ui/icons/Search'; import { ExtendedProviderStatus } from 'models/apiModel'; import { useAllProviders, useAppDispatch, useIsRpcEndpointBusy, } from 'store/hooks'; import { setSelectedProvider } from 'store/features/providersSlice'; import { RpcMethod } from 'models/rpcModel'; import ProviderSubmitDialog from './ProviderSubmitDialog'; import ListSellersDialog from '../listSellers/ListSellersDialog'; import ProviderInfo from './ProviderInfo'; const useStyles = makeStyles({ dialogContent: { padding: 0, }, }); type ProviderSelectDialogProps = { open: boolean; onClose: () => void; }; export function ProviderSubmitDialogOpenButton() { const [open, setOpen] = useState(false); return ( { // Prevents background from being clicked and reopening dialog if (!open) { setOpen(true); } }} > setOpen(false)} /> ); } export function ListSellersDialogOpenButton() { const [open, setOpen] = useState(false); const running = useIsRpcEndpointBusy(RpcMethod.LIST_SELLERS); return ( { // Prevents background from being clicked and reopening dialog if (!open) { setOpen(true); } }} > setOpen(false)} /> {running ? : } ); } export default function ProviderListDialog({ open, onClose, }: ProviderSelectDialogProps) { const classes = useStyles(); const providers = useAllProviders(); const dispatch = useAppDispatch(); function handleProviderChange(provider: ExtendedProviderStatus) { dispatch(setSelectedProvider(provider)); onClose(); } return ( Select a swap provider {providers.map((provider) => ( handleProviderChange(provider)} key={provider.peerId} > ))} ); }