Skip to content

Commit 053b750

Browse files
authored
refactor(client): challenge links (freeCodeCamp#57905)
1 parent 95393aa commit 053b750

File tree

1 file changed

+31
-25
lines changed

1 file changed

+31
-25
lines changed

client/src/templates/Introduction/components/challenges.tsx

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ interface Challenges {
1919
const CheckMark = ({ isCompleted }: { isCompleted: boolean }) =>
2020
isCompleted ? <GreenPass /> : <GreenNotCompleted />;
2121

22-
const Challenge = ({ challenge }: { challenge: ExtendedChallenge }) => (
22+
const ListChallenge = ({ challenge }: { challenge: ExtendedChallenge }) => (
2323
<Link to={challenge.fields.slug}>
2424
<span className='map-badge'>
2525
<CheckMark isCompleted={challenge.isCompleted} />
@@ -28,7 +28,7 @@ const Challenge = ({ challenge }: { challenge: ExtendedChallenge }) => (
2828
</Link>
2929
);
3030

31-
const Project = ({ challenge }: { challenge: ExtendedChallenge }) => (
31+
const CertChallenge = ({ challenge }: { challenge: ExtendedChallenge }) => (
3232
<Link to={challenge.fields.slug}>
3333
{challenge.title}
3434
<span className='map-badge map-project-checkmark'>
@@ -37,6 +37,30 @@ const Project = ({ challenge }: { challenge: ExtendedChallenge }) => (
3737
</Link>
3838
);
3939

40+
// Step or Task challenge
41+
const GridChallenge = ({ challenge }: { challenge: ExtendedChallenge }) => {
42+
const { t } = useTranslation();
43+
44+
return (
45+
<Link
46+
to={challenge.fields.slug}
47+
className={`map-grid-item ${
48+
+challenge.isCompleted ? 'challenge-completed' : ''
49+
}`}
50+
>
51+
<span className='sr-only'>
52+
{challenge.superBlock === SuperBlocks.A2English
53+
? t('aria.task')
54+
: t('aria.step')}
55+
</span>
56+
<span>{challenge.stepNumber}</span>
57+
<span className='sr-only'>
58+
{challenge.isCompleted ? t('icons.passed') : t('icons.not-passed')}
59+
</span>
60+
</Link>
61+
);
62+
};
63+
4064
function Challenges({
4165
challenges,
4266
isProjectBlock,
@@ -89,29 +113,11 @@ function Challenges({
89113
>
90114
{!isProjectBlock &&
91115
challenge.challengeType !== challengeTypes.dialogue ? (
92-
// Step or Task challenge
93-
<Link
94-
to={challenge.fields.slug}
95-
className={`map-grid-item ${
96-
+challenge.isCompleted ? 'challenge-completed' : ''
97-
}`}
98-
>
99-
<span className='sr-only'>
100-
{challenge.superBlock === SuperBlocks.A2English
101-
? t('aria.task')
102-
: t('aria.step')}
103-
</span>
104-
<span>{challenge.stepNumber}</span>
105-
<span className='sr-only'>
106-
{challenge.isCompleted
107-
? t('icons.passed')
108-
: t('icons.not-passed')}
109-
</span>
110-
</Link>
116+
<GridChallenge challenge={challenge} />
111117
) : challenge.challengeType === challengeTypes.dialogue ? (
112-
<Challenge challenge={challenge} />
118+
<ListChallenge challenge={challenge} />
113119
) : (
114-
<Project challenge={challenge} />
120+
<CertChallenge challenge={challenge} />
115121
)}
116122
</li>
117123
))}
@@ -129,9 +135,9 @@ function Challenges({
129135
key={'map-challenge' + challenge.fields.slug}
130136
>
131137
{!isProjectBlock ? (
132-
<Challenge challenge={challenge} />
138+
<ListChallenge challenge={challenge} />
133139
) : (
134-
<Project challenge={challenge} />
140+
<CertChallenge challenge={challenge} />
135141
)}
136142
</li>
137143
))}

0 commit comments

Comments
 (0)