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