import BN from 'bn.js'; import React from 'react'; import { ApiProps } from '@polkadot/react-api/types'; import { I18nProps } from '@polkadot/react-components/types'; import { Section } from '@polkadot/joy-utils/react/components'; import translate from './translate'; import Details from './Details'; import { MemberId } from '@joystream/types/members'; import { RouteComponentProps, Redirect } from 'react-router-dom'; import { Pagination, Icon, PaginationProps } from 'semantic-ui-react'; import styled from 'styled-components'; import { withApi } from '@polkadot/react-api'; const StyledPagination = styled(Pagination)` border-bottom: 1px solid #ddd !important; `; type Props = ApiProps & I18nProps & RouteComponentProps & { firstMemberId: BN; membersCreated: BN; match: { params: { page?: string } }; }; type State = Record; const MEMBERS_PER_PAGE = 20; class Component extends React.PureComponent { state: State = {}; onPageChange = (e: React.MouseEvent, data: PaginationProps) => { const { history } = this.props; history.push(`/members/list/${data.activePage || 1}`); } renderPagination (currentPage: number, pagesCount: number) { return ( , icon: true }} firstItem={{ content: , icon: true }} lastItem={{ content: , icon: true }} prevItem={{ content: , icon: true }} nextItem={{ content: , icon: true }} totalPages={ pagesCount } onPageChange={ this.onPageChange } /> ); } render () { const { firstMemberId, membersCreated, match: { params: { page } }, api } = this.props; const membersCount = membersCreated.toNumber(); const pagesCount = Math.ceil(membersCount / MEMBERS_PER_PAGE) || 1; const currentPage = Math.min(parseInt(page || '1'), pagesCount); if (currentPage.toString() !== page) { return ; } const ids: MemberId[] = []; if (membersCount > 0) { const firstId = firstMemberId.toNumber() + (currentPage - 1) * MEMBERS_PER_PAGE; const lastId = Math.min(firstId + MEMBERS_PER_PAGE, membersCount) - 1; for (let i = firstId; i <= lastId; i++) { ids.push(api.createType('MemberId', i)); } } return (
1 && this.renderPagination(currentPage, pagesCount)) || undefined }> { membersCount === 0 ? No registered members yet. : (
{ids.map((id, i) =>
)}
) }
); } } export default translate(withApi(Component));