diff --git a/src/apps/profiles/src/components/tc-achievements/MemberStatsBlock/MemberStatsBlock.tsx b/src/apps/profiles/src/components/tc-achievements/MemberStatsBlock/MemberStatsBlock.tsx index ca76c380c..3964ec299 100644 --- a/src/apps/profiles/src/components/tc-achievements/MemberStatsBlock/MemberStatsBlock.tsx +++ b/src/apps/profiles/src/components/tc-achievements/MemberStatsBlock/MemberStatsBlock.tsx @@ -6,7 +6,7 @@ import { getRatingColor, MemberStats, UserProfile } from '~/libs/core' import { IconOutline } from '~/libs/ui' import { useFetchActiveTracks } from '../../../hooks' -import { WinnerIcon } from '../../../lib' +import { formatPlural, WinnerIcon } from '../../../lib' import { MemberProfileContextValue, useMemberProfileContext } from '../../../member-profile/MemberProfile.context' import styles from './MemberStatsBlock.module.scss' @@ -45,13 +45,18 @@ const MemberStatsBlock: FC = props => {
{!track.isDSTrack && ((track.submissions || track.wins) > 0) && ( <> - + {track.wins > 0 && ( + + )} {track.wins || track.submissions} - {track.wins > 0 ? 'Wins' : 'Submissions'} + {formatPlural( + track.wins || track.submissions || 0, + track.wins > 0 ? 'Win' : 'Submission', + )} diff --git a/src/apps/profiles/src/components/tc-achievements/StatsSummaryBlock/StatsSummaryBlock.tsx b/src/apps/profiles/src/components/tc-achievements/StatsSummaryBlock/StatsSummaryBlock.tsx index 33b1749bc..692bc26a9 100644 --- a/src/apps/profiles/src/components/tc-achievements/StatsSummaryBlock/StatsSummaryBlock.tsx +++ b/src/apps/profiles/src/components/tc-achievements/StatsSummaryBlock/StatsSummaryBlock.tsx @@ -4,7 +4,7 @@ import { find, get } from 'lodash' import { getRatingColor } from '~/libs/core' -import { numberToFixed } from '../../../lib' +import { formatPlural, numberToFixed } from '../../../lib' import { TracksSummaryStats } from '../../../config' import styles from './StatsSummaryBlock.module.scss' @@ -49,7 +49,10 @@ const StatsSummaryBlock: FC = props => { - {props.trackTitle === 'Single Round Match' ? 'Competitions' : 'Challenges'} + {formatPlural( + props.challenges || 0, + props.trackTitle === 'Single Round Match' ? 'Competition' : 'Challenge', + )}
@@ -61,7 +64,7 @@ const StatsSummaryBlock: FC = props => { - Wins + {formatPlural(props.wins || 0, 'Win')} @@ -73,7 +76,7 @@ const StatsSummaryBlock: FC = props => { - Submissions + {formatPlural(props.submissions || 0, 'Submission')} diff --git a/src/apps/profiles/src/components/tc-achievements/SubTrackSummaryCard/SubTrackSummaryCard.tsx b/src/apps/profiles/src/components/tc-achievements/SubTrackSummaryCard/SubTrackSummaryCard.tsx index 127744573..52c38e414 100644 --- a/src/apps/profiles/src/components/tc-achievements/SubTrackSummaryCard/SubTrackSummaryCard.tsx +++ b/src/apps/profiles/src/components/tc-achievements/SubTrackSummaryCard/SubTrackSummaryCard.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames' import { IconSolid } from '~/libs/ui' -import { subTrackLabelToHumanName, WinnerIcon } from '../../../lib' +import { formatPlural, subTrackLabelToHumanName, WinnerIcon } from '../../../lib' import styles from './SubTrackSummaryCard.module.scss' @@ -29,7 +29,9 @@ const SubTrackSummaryCard: FC = props => ( {props.wins} - wins + + {formatPlural(props.wins || 0, 'Win')} + )} @@ -38,7 +40,9 @@ const SubTrackSummaryCard: FC = props => ( {props.submissions} - submissions + + {formatPlural(props.submissions || 0, 'Submission')} + diff --git a/src/apps/profiles/src/lib/helpers.ts b/src/apps/profiles/src/lib/helpers.ts index b80c17c5a..d5306a1be 100644 --- a/src/apps/profiles/src/lib/helpers.ts +++ b/src/apps/profiles/src/lib/helpers.ts @@ -113,3 +113,15 @@ export function isValidURL(urlToValidate: string): boolean { return true } + +/** + * Creates the string with the number of items and the word describing the item + * possibly in plural form. + * + * @param {number} count - The number of entities + * @param {string} baseWord - The base word that describes the entity + * @returns {string} + */ +export function formatPlural(count: number, baseWord: string): string { + return `${baseWord}${count === 1 ? '' : 's'}` +}