import Card from '@material-ui/core/Card' import Table from '@material-ui/core/Table' import TableBody from '@material-ui/core/TableBody' import TableCell from '@material-ui/core/TableCell' import TableHead from '@material-ui/core/TableHead' import TablePagination from '@material-ui/core/TablePagination' import TableRow from '@material-ui/core/TableRow' import Typography from '@material-ui/core/Typography' import Link from 'components/Link' import TableButtons, { FIRST_PAGE } from 'components/TableButtons' import React, { useState, useEffect } from 'react' import { RouteComponentProps } from 'react-router-dom' const renderFetching = () => ( ... ) const renderError = (error: string) => ( {error} ) const renderBridges = (bridges: any[]) => bridges.map((bridge) => ( {bridge.name} {bridge.url} {bridge.confirmations} {bridge.minimumContractPayment} )) const renderBody = (bridges: any[], fetching: boolean, error: string) => { if (fetching) { return renderFetching() } else if (error) { return renderError(error) } else { return renderBridges(bridges) } } // CHECKME interface OwnProps { bridges: any[] bridgeCount: number pageSize: number fetching: boolean error: string fetchBridges: (...args: any[]) => any } // CHECKME type RouteProps = RouteComponentProps<{ bridgePage: string }> type Props = OwnProps & RouteProps export const BridgeList: React.FC = ({ bridges, bridgeCount, error, fetchBridges, fetching, history, match, pageSize, }) => { const [page, setPage] = useState(FIRST_PAGE) useEffect(() => { const queryPage = parseInt(match?.params.bridgePage, 10) || FIRST_PAGE setPage(queryPage) fetchBridges(queryPage, pageSize) }, [fetchBridges, pageSize, match]) const handleChangePage = (_: never, page: React.SetStateAction) => { fetchBridges(page, pageSize) setPage(page) } const TableButtonsWithProps = () => ( ) return ( Name URL Default Confirmations Minimum Contract Payment {renderBody(bridges, fetching, error)}
{} /* handler required by component, so make it a no-op */ } onChangeRowsPerPage={ () => {} /* handler required by component, so make it a no-op */ } ActionsComponent={TableButtonsWithProps} />
) } export default BridgeList