import type React from 'react' import { IReleaseListProps } from '../interfaces' import { FeatureBadge } from './FeatureBadge' import { formatDate } from '../utils/format' import { getString } from '../utils/getString' const { Card, CardBody } = wp.components export const ReleaseList: React.FC = ({ releases, selectedRelease, onSelectRelease, repository, strings = {}, features, upgradeUrl, error, onRetry }) => { const isLatestSelected = selectedRelease === 'latest' const isLatestProFeature = features && !features.useLatestRelease if (error) { return (

{error}{' '} {onRetry && ( { e.preventDefault() e.stopPropagation() onRetry() }} > {strings.retry || getString('common.retry')} )}

) } if (releases.length === 0) { return (

{strings.noReleases || getString('releases.noReleases')}{' '} {repository && ( e.stopPropagation()} > {strings.createOne || getString('releases.createOne')} )}

) } return (
{ if (isLatestProFeature && upgradeUrl) { window.open(upgradeUrl, '_blank') } else { onSelectRelease('latest') } }} >
{strings.useLatestRelease || getString('releases.useLatest')}

{strings.useLatestReleaseDesc || getString('releases.latestDescription')}

{isLatestProFeature ? ( ) : isLatestSelected ? ( ) : ( )}

{strings.releases || getString('releases.title')}

{releases.map((release) => { const isSelected = selectedRelease === release.tag_name return ( onSelectRelease(release)} >
{release.tag_name} {release.name && release.name !== release.tag_name && ( - {release.name} )}
{formatDate(release.published_at)} • {release.assets.length}{' '} {release.assets.length === 1 ? strings.asset || getString('assets.asset') : strings.assets || getString('assets.assets')}
{isSelected ? ( ) : ( )}
) })}
) }