@@ -10,21 +10,45 @@ import { LightHero, LightHeroPrimaryText, LightHeroSecondaryText } from '~/clien
10
10
import SeeMoreItemList from '~/client/components/ui/SeeMore/SeeMoreItemList' ;
11
11
import useAnalytics from '~/client/hooks/useAnalytics' ;
12
12
import analytics from '~/pages/espace-jeune/index.analytics' ;
13
+ import { Accueil } from '~/pages/index.page' ;
13
14
import { Actualite } from '~/server/actualites/domain/actualite' ;
14
15
import { isFailure } from '~/server/errors/either' ;
15
16
import { ServiceJeune } from '~/server/services-jeunes/domain/servicesJeunes' ;
16
17
import { dependencies } from '~/server/start' ;
18
+ import { ISODateTime } from '~/shared/ISODateTime' ;
17
19
18
20
import styles from './index.module.scss' ;
19
21
20
- interface EspaceJeunePageProps {
21
- cartesActualites : Actualite [ ]
22
+ type EspaceJeunePageProps = {
23
+ cartesActualites : Array < Actualite >
22
24
serviceJeuneList : Array < ServiceJeune >
23
25
}
26
+ type SerializedActualite = Omit < Actualite , 'dateMiseAJour' > & {
27
+ dateMiseAJour ?: ISODateTime
28
+ }
29
+ type SerializedEspaceJeunePageProps = {
30
+ cartesActualites : Array < SerializedActualite >
31
+ serviceJeuneList : Array < ServiceJeune >
32
+ }
33
+
24
34
25
35
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 ( cartesActualitesResponse : unknown ) : Record < string , unknown > {
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
+ }
26
50
27
- export default function EspaceJeunePage ( { cartesActualites, serviceJeuneList } : EspaceJeunePageProps ) {
51
+ export function EspaceJeunePage ( { cartesActualites, serviceJeuneList } : EspaceJeunePageProps ) {
28
52
useAnalytics ( analytics ) ;
29
53
30
54
const articleCardList : React . ReactNode [ ] = useMemo ( ( ) => {
@@ -87,8 +111,8 @@ export async function getStaticProps(): Promise<GetStaticPropsResult<EspaceJeune
87
111
88
112
return {
89
113
props : {
90
- cartesActualites : JSON . parse ( JSON . stringify ( cartesActualitesResponse . result ) ) ,
91
- serviceJeuneList : JSON . parse ( JSON . stringify ( serviceJeuneList . result ) ) ,
114
+ cartesActualites : serialize ( cartesActualitesResponse . result ) ,
115
+ serviceJeuneList : serialize ( serviceJeuneList . result ) ,
92
116
} ,
93
117
revalidate : dependencies . cmsDependencies . duréeDeValiditéEnSecondes ( ) ,
94
118
} ;
0 commit comments