import React, { ReactElement } from 'react'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import { DetailContextConsumer } from '../../pages/Version'; import { formatDateDistance } from '../../utils/package'; import { DIST_TAGS } from '../../../lib/constants'; import { Heading, Spacer, ListItemText } from './styles'; const NOT_AVAILABLE = 'Not available'; class Versions extends React.PureComponent { public render(): ReactElement { return ( {context => { return context && context.packageMeta && this.renderContent(context.packageMeta); }} ); } public renderPackageList = (packages: {}, isVersion: boolean = false, timeMap: Record = {}): ReactElement => { return ( {Object.keys(packages) .reverse() .map(version => ( {version} {isVersion && {timeMap[version] ? `${formatDateDistance(timeMap[version])} ago` : NOT_AVAILABLE}} {isVersion === false && {packages[version]}} ))} ); }; public renderContent(packageMeta): ReactElement { const { versions = {}, time: timeMap = {}, [DIST_TAGS]: distTags = {} } = packageMeta; return ( <> {distTags && ( <> {'Current Tags'} {this.renderPackageList(distTags, false, timeMap)} )} {versions && ( <> {'Version History'} {this.renderPackageList(versions, true, timeMap)} )} ); } } export default Versions;