Skip to content

Commit 55bacc6

Browse files
committed
refactor: Review
1 parent 6f94795 commit 55bacc6

File tree

4 files changed

+74
-80
lines changed

4 files changed

+74
-80
lines changed

src/pages/actualites/index.page.tsx

+19-21
Original file line numberDiff line numberDiff line change
@@ -15,32 +15,11 @@ import { ISODateTime } from '~/shared/ISODateTime';
1515
import analytics from './index.analytics';
1616
import styles from './index.module.scss';
1717

18-
type SerializedActualite = Omit<Actualite, 'dateMiseAJour'> & {
19-
dateMiseAJour?: ISODateTime
20-
}
21-
interface SerializedActualitesPageProps {
22-
cartesActualites: Array<SerializedActualite>
23-
}
2418
interface ActualitesPageProps {
2519
cartesActualites: Array<Actualite>
2620
}
27-
2821
const MAX_VISIBLE_ACTUALITES = 3;
2922

30-
function deserialize(actualites: Array<SerializedActualite>): Array<Actualite> {
31-
return actualites.map((actualite) => ({
32-
...actualite,
33-
dateMiseAJour: actualite.dateMiseAJour ? new Date(actualite.dateMiseAJour) : undefined,
34-
}));
35-
}
36-
function serialize(cartesActualitesResponse: Array<Actualite>): Array<SerializedActualite> {
37-
return JSON.parse(JSON.stringify(cartesActualitesResponse));
38-
}
39-
40-
export default function Deserialize(props: SerializedActualitesPageProps) {
41-
const deserializedActus = deserialize(props.cartesActualites);
42-
return <ActualitesPage cartesActualites={deserializedActus} />;
43-
}
4423
export function ActualitesPage({ cartesActualites }: ActualitesPageProps) {
4524
useAnalytics(analytics);
4625

@@ -76,6 +55,25 @@ export function ActualitesPage({ cartesActualites }: ActualitesPageProps) {
7655
);
7756
}
7857

58+
type SerializedActualite = Omit<Actualite, 'dateMiseAJour'> & {
59+
dateMiseAJour?: ISODateTime
60+
}
61+
interface SerializedActualitesPageProps {
62+
cartesActualites: Array<SerializedActualite>
63+
}
64+
function deserialize(actualites: Array<SerializedActualite>): Array<Actualite> {
65+
return actualites.map((actualite) => ({
66+
...actualite,
67+
dateMiseAJour: actualite.dateMiseAJour ? new Date(actualite.dateMiseAJour) : undefined,
68+
}));
69+
}
70+
function serialize(cartesActualitesResponse: Array<Actualite>): Array<SerializedActualite> {
71+
return JSON.parse(JSON.stringify(cartesActualitesResponse));
72+
}
73+
export default function Deserialize(props: SerializedActualitesPageProps) {
74+
const deserializedActus = deserialize(props.cartesActualites);
75+
return <ActualitesPage cartesActualites={deserializedActus} />;
76+
}
7977
export async function getStaticProps(): Promise<GetStaticPropsResult<SerializedActualitesPageProps>> {
8078
const isEspaceJeuneVisible = process.env.NEXT_PUBLIC_OLD_ESPACE_JEUNE_FEATURE === '0';
8179
if (!isEspaceJeuneVisible) {

src/pages/espace-jeune/index.page.tsx

+20-23
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,7 @@ type EspaceJeunePageProps = {
2323
cartesActualites: Array<Actualite>
2424
serviceJeuneList: Array<ServiceJeune>
2525
}
26-
type SerializedActualite = Omit<Actualite, 'dateMiseAJour'> & {
27-
dateMiseAJour?: ISODateTime
28-
}
29-
type SerializedEspaceJeunePageProps = {
30-
cartesActualites: Array<SerializedActualite>
31-
serviceJeuneList: Array<ServiceJeune>
32-
}
33-
34-
3526
const MAX_VISIBLE_ACTUALITES_LENGTH = 3;
36-
function deserialize(actualites: Array<SerializedActualite>): Array<Actualite> {
37-
return actualites.map((actualite) => ({
38-
...actualite,
39-
dateMiseAJour: actualite.dateMiseAJour ? new Date(actualite.dateMiseAJour) : undefined,
40-
}));
41-
}
42-
function serialize<SerializedType, InitialType>(cartesActualitesResponse: InitialType): SerializedType {
43-
return JSON.parse(JSON.stringify(cartesActualitesResponse));
44-
}
45-
46-
export default function Deserialize(props: SerializedEspaceJeunePageProps) {
47-
const deserializedActus = deserialize(props.cartesActualites);
48-
return <Accueil actualites={deserializedActus} />;
49-
}
5027

5128
export function EspaceJeunePage({ cartesActualites, serviceJeuneList }: EspaceJeunePageProps) {
5229
useAnalytics(analytics);
@@ -96,6 +73,26 @@ export function EspaceJeunePage({ cartesActualites, serviceJeuneList }: EspaceJe
9673
);
9774
}
9875

76+
type SerializedActualite = Omit<Actualite, 'dateMiseAJour'> & {
77+
dateMiseAJour?: ISODateTime
78+
}
79+
type SerializedEspaceJeunePageProps = {
80+
cartesActualites: Array<SerializedActualite>
81+
serviceJeuneList: Array<ServiceJeune>
82+
}
83+
function deserialize(actualites: Array<SerializedActualite>): Array<Actualite> {
84+
return actualites.map((actualite) => ({
85+
...actualite,
86+
dateMiseAJour: actualite.dateMiseAJour ? new Date(actualite.dateMiseAJour) : undefined,
87+
}));
88+
}
89+
function serialize<SerializedType, InitialType>(cartesActualitesResponse: InitialType): SerializedType {
90+
return JSON.parse(JSON.stringify(cartesActualitesResponse));
91+
}
92+
export default function Deserialize(props: SerializedEspaceJeunePageProps) {
93+
const deserializedActus = deserialize(props.cartesActualites);
94+
return <Accueil actualites={deserializedActus} />;
95+
}
9996
export async function getStaticProps(): Promise<GetStaticPropsResult<SerializedEspaceJeunePageProps>> {
10097
const isEspaceJeuneVisible = process.env.NEXT_PUBLIC_OLD_ESPACE_JEUNE_FEATURE === '1';
10198
if (!isEspaceJeuneVisible) {

src/pages/index.page.tsx

+33-34
Original file line numberDiff line numberDiff line change
@@ -26,30 +26,9 @@ interface CardContent {
2626
title: string
2727
}
2828

29-
type SerializedActualite = Omit<Actualite, 'dateMiseAJour'> & {
30-
dateMiseAJour?: ISODateTime
31-
}
32-
interface SerializedAccueilPageProps {
33-
actualites: Array<SerializedActualite>
34-
}
3529
interface AccueilPageProps {
3630
actualites: Array<Actualite>
3731
}
38-
function deserialize(actualites: Array<SerializedActualite>): Array<Actualite> {
39-
return actualites.map((actualite) => ({
40-
...actualite,
41-
dateMiseAJour: actualite.dateMiseAJour ? new Date(actualite.dateMiseAJour) : undefined,
42-
}));
43-
}
44-
function serialize(cartesActualitesResponse: Array<Actualite>): Array<SerializedActualite> {
45-
return JSON.parse(JSON.stringify(cartesActualitesResponse));
46-
}
47-
48-
export default function Deserialize(props: SerializedAccueilPageProps) {
49-
const deserializedActus = deserialize(props.actualites);
50-
return <Accueil actualites={deserializedActus} />;
51-
}
52-
5332
export function Accueil({ actualites }: AccueilPageProps) {
5433
useAnalytics(analytics);
5534

@@ -297,35 +276,35 @@ export function Accueil({ actualites }: AccueilPageProps) {
297276
{isBanniereStagesSecondeVisible
298277
&& (
299278
<HeroWithIllustration image="/images/stages-seconde/banniere-stages-seconde.webp"
300-
className={classNames(styles.hero, styles.stageSecondeBanner)}>
279+
className={classNames(styles.hero, styles.stageSecondeBanner)}>
301280
{isBanniereStagesSecondePourCampagneDu25Mars ? (
302281
<>
303282
<h2>
304283
<HeroPrimaryText className={styles.heroTitle}>
305-
Un stage du 17 au 28 juin 2024
284+
Un stage du 17 au 28 juin 2024
306285
</HeroPrimaryText>
307286
</h2>
308287
<HeroSecondaryText>
309-
pour permettre aux élèves de seconde générale et technologique de diversifier leur connaissance des
310-
métiers.
288+
pour permettre aux élèves de seconde générale et technologique de diversifier leur connaissance des
289+
métiers.
311290
</HeroSecondaryText>
312291
<Link href={urlHomePageStageDeSeconde} appearance={'asSecondaryButton'} className={styles.heroButton}>
313-
Proposer un stage ou candidater
292+
Proposer un stage ou candidater
314293
<Link.Icon />
315294
</Link>
316295
</>
317296
) : (
318297
<>
319298
<h2>
320299
<HeroPrimaryText className={styles.heroTitle}>
321-
Accueillez des élèves en stages de seconde générale et technologique.
300+
Accueillez des élèves en stages de seconde générale et technologique.
322301
</HeroPrimaryText>
323302
</h2>
324303
<HeroSecondaryText>
325-
Inspirez, transmettez, faites découvrir vos métiers.
304+
Inspirez, transmettez, faites découvrir vos métiers.
326305
</HeroSecondaryText>
327306
<Link href={urlDepotOffreStagesSeconde} appearance={'asSecondaryButton'} className={styles.heroButton}>
328-
Déposer votre offre de stage
307+
Déposer votre offre de stage
329308
<Link.Icon />
330309
</Link>
331310
</>
@@ -339,14 +318,14 @@ export function Accueil({ actualites }: AccueilPageProps) {
339318
<HeroWithIllustration image="/images/campagne-world-skills-2024.webp" className={classNames(styles.hero, styles.worldSkills)}>
340319
<h2>
341320
<HeroPrimaryText className={styles.heroTitle}>
342-
WorldSkills Lyon 2024, la Compétition Mondiale des Métiers.
321+
WorldSkills Lyon 2024, la Compétition Mondiale des Métiers.
343322
</HeroPrimaryText>
344323
</h2>
345324
<HeroSecondaryText>
346-
1jeune1solution s’engage en faveur de la jeunesse, venez nous rencontrer du 10 au 15 septembre lors de la compétition WorldSkills Lyon 2024.
325+
1jeune1solution s’engage en faveur de la jeunesse, venez nous rencontrer du 10 au 15 septembre lors de la compétition WorldSkills Lyon 2024.
347326
</HeroSecondaryText>
348327
<Link href="https://worldskills2024.com" appearance={'asSecondaryButton'} className={styles.heroButton}>
349-
Plus d’infos
328+
Plus d’infos
350329
<Link.Icon />
351330
</Link>
352331
</HeroWithIllustration>
@@ -393,7 +372,7 @@ export function Accueil({ actualites }: AccueilPageProps) {
393372
<section className={styles.section}>
394373
<h2 id="actualites" className={styles.sectionHeader}>
395374
<Icon name="newspaper" className={styles.headerIcon} />
396-
Actualités
375+
Actualités
397376
</h2>
398377
<Container className={styles.sectionListeActualites}>
399378
<ul>
@@ -402,7 +381,7 @@ export function Accueil({ actualites }: AccueilPageProps) {
402381
)}
403382
</ul>
404383
<Link href={'/actualites'} appearance={'asSecondaryButton'}>
405-
Voir toutes les actualités
384+
Voir toutes les actualités
406385
<Link.Icon />
407386
</Link>
408387
</Container>
@@ -492,6 +471,26 @@ export function Accueil({ actualites }: AccueilPageProps) {
492471
);
493472
}
494473

474+
type SerializedActualite = Omit<Actualite, 'dateMiseAJour'> & {
475+
dateMiseAJour?: ISODateTime
476+
}
477+
interface SerializedAccueilPageProps {
478+
actualites: Array<SerializedActualite>
479+
}
480+
function deserialize(actualites: Array<SerializedActualite>): Array<Actualite> {
481+
return actualites.map((actualite) => ({
482+
...actualite,
483+
dateMiseAJour: actualite.dateMiseAJour ? new Date(actualite.dateMiseAJour) : undefined,
484+
}));
485+
}
486+
function serialize(cartesActualitesResponse: Array<Actualite>): Array<SerializedActualite> {
487+
return JSON.parse(JSON.stringify(cartesActualitesResponse));
488+
}
489+
export default function Deserialize(props: SerializedAccueilPageProps) {
490+
const deserializedActus = deserialize(props.actualites);
491+
return <Accueil actualites={deserializedActus} />;
492+
}
493+
495494
export async function getStaticProps(): Promise<GetStaticPropsResult<SerializedAccueilPageProps>> {
496495
const isEspaceJeuneVisible = process.env.NEXT_PUBLIC_OLD_ESPACE_JEUNE_FEATURE === '0';
497496
if (!isEspaceJeuneVisible) {

src/shared/ISODateTime.d.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ type Hour = string;
55
type Minute = string;
66
type Second = string;
77
type Millisecond = string;
8-
type Timezone = string;
8+
type Offset = string;
99
type ISODate = `${Year}-${Month}-${Day}`
1010
type ISOTime = `${Hour}:${Minute}:${Second}.${Millisecond}`
11-
export type ISODateTime = `${ISODate}T${ISOTime}${Timezone}`
11+
export type ISODateTime = `${ISODate}T${ISOTime}${Offset}`

0 commit comments

Comments
 (0)