import React, {Component} from 'react'; import Avatar from '@material-ui/core/Avatar'; import Tooltip from '@material-ui/core/Tooltip'; import Add from '@material-ui/icons/Add'; import { DetailContextConsumer } from '../../pages/version'; import { Details, Heading, Content, Fab } from './styles'; interface Props { type: 'contributors' | 'maintainers' } class Developers extends Component { state = { visibleDevs: 6, }; render() { return ( {({ packageMeta }) => { const { type } = this.props; const developerType = packageMeta.latest[type]; if (!developerType || developerType.length === 0) return null; return this.renderDevelopers(developerType, packageMeta); }} ); }; handleLoadMore = () => { this.setState((prev) => ({ visibleDevs: prev.visibleDevs + 6 })); } renderDevelopers = (developers, packageMeta) => { const { type } = this.props; const { visibleDevs } = this.state; return ( <> {type} {developers.slice(0, visibleDevs).map(developer => (
{this.renderDeveloperDetails(developer, packageMeta)}
))} {visibleDevs < developers.length && }
); } renderLinkForMail(email, avatarComponent, packageName, version) { if(!email) { return avatarComponent; } return ( {avatarComponent} ); } renderDeveloperDetails = ({ name, avatar, email }, packageMeta) => { const { name: packageName, version, } = packageMeta.latest; const avatarComponent = ; return ( {this.renderLinkForMail(email, avatarComponent, packageName, version)} ); } } export default Developers;