import React from 'react'; import { connect } from 'react-redux'; import UserRow from 'components/UserRow'; import Placeholder from 'components/Placeholder'; import UnitDisplay from 'components/UnitDisplay'; import { toZat } from 'utils/units'; import { fetchProposalContributions } from 'modules/proposals/actions'; import { getProposalContributions, getIsFetchingContributions, getFetchContributionsError, } from 'modules/proposals/selectors'; import { ContributionWithUser } from 'types'; import { AppState } from 'store/reducers'; import './index.less'; interface OwnProps { proposalId: number; } interface StateProps { contributions: ReturnType; isFetchingContributions: ReturnType; fetchContributionsError: ReturnType; } interface DispatchProps { fetchProposalContributions: typeof fetchProposalContributions; } type Props = OwnProps & StateProps & DispatchProps; class ProposalContributors extends React.Component { componentDidMount() { if (this.props.proposalId) { this.props.fetchProposalContributions(this.props.proposalId); } } componentWillReceiveProps(nextProps: Props) { if (nextProps.proposalId && nextProps.proposalId !== this.props.proposalId) { this.props.fetchProposalContributions(nextProps.proposalId); } } render() { const { contributions, fetchContributionsError } = this.props; let content; if (contributions) { if (contributions.top.length && contributions.latest.length) { const makeContributionRow = (c: ContributionWithUser) => (
+ } />
); content = ( <>

Latest contributors

{contributions.latest.map(makeContributionRow)}

Top contributors

{contributions.top.map(makeContributionRow)}
); } else { content = ( ); } } else if (fetchContributionsError) { content = ( ); } else { content = ; } return
{content}
; } } export default connect( (state: AppState, ownProps: OwnProps) => ({ contributions: getProposalContributions(state, ownProps.proposalId), isFetchingContributions: getIsFetchingContributions(state), fetchContributionsError: getFetchContributionsError(state), }), { fetchProposalContributions, }, )(ProposalContributors);