diff --git a/source/components/localisation/Localisation.tsx b/source/components/localisation/Localisation.tsx index dbc5f2eab2..23352df15b 100644 --- a/source/components/localisation/Localisation.tsx +++ b/source/components/localisation/Localisation.tsx @@ -43,83 +43,81 @@ export default ({ title = 'Ma région de simulation' }) => { return (

đź“Ť {t(title)}

- {localisation != null ? ( - regionParams ? ( - <> -

- {localisation?.userChosen ? ( - - Vous avez choisi - {countryName} - - ) : iframeLocalisationOption ? ( - - Vous utilisez la version {versionName} du test - - ) : ( - - - Nous avons détecté que vous faites cette simulation depuis{' '} - - {countryName} - - )} - - .{' '} - {localisation?.userChosen && ( - - )} -

- - - ) : ( - localisation?.country && ( -

- - Nous avons détecté que vous faites cette simulation depuis - {' '} - {countryName} - - . - - Pour le moment, il n'existe pas de modèle de calcul pour{' '} - {{ countryName }}, le modèle Français vous est proposé par - défaut. - -

- ) - ) - ) : ( + {!regionParams && localisation?.fetchDone ? (

Nous n'avons pas pu détecter votre pays de simulation, le modèle Français vous est proposé par défaut. {' '}

+ ) : regionParams ? ( + <> +

+ {localisation?.userChosen ? ( + + Vous avez choisi + {countryName} + + ) : iframeLocalisationOption ? ( + + Vous utilisez la version {versionName} du test + + ) : ( + + + Nous avons détecté que vous faites cette simulation depuis{' '} + + {countryName} + + )} + + .{' '} + {localisation?.userChosen && ( + + )} +

+ + + ) : ( + localisation?.country && ( +

+ + Nous avons détecté que vous faites cette simulation depuis + {' '} + {countryName} + + . + + Pour le moment, il n'existe pas de modèle de calcul pour{' '} + {{ countryName }}, le modèle Français vous est proposé par défaut. + +

+ ) )} {} diff --git a/source/components/localisation/LocalisationMessage.tsx b/source/components/localisation/LocalisationMessage.tsx index 4d6b3d341d..e56f398a5a 100644 --- a/source/components/localisation/LocalisationMessage.tsx +++ b/source/components/localisation/LocalisationMessage.tsx @@ -42,6 +42,10 @@ export default (): JSX.Element => { if (code === defaultModelRegionCode) return + if (localisation == null) return + + if (!code && !localisation.fetchDone) return + return ( { )}{' '}

- ) : localisation ? ( + ) : code ? (

Nous avons détecté que vous faites cette simulation depuis diff --git a/source/components/localisation/useLocalisation.ts b/source/components/localisation/useLocalisation.ts index 9b9c65c028..20ef2e5ef8 100644 --- a/source/components/localisation/useLocalisation.ts +++ b/source/components/localisation/useLocalisation.ts @@ -63,6 +63,10 @@ export default () => { return undefined } + if (localisation?.fetchDone) { + return undefined + } + const asyncFecthAPI = async () => { await fetch(API) .then((res) => { @@ -88,8 +92,8 @@ export default () => { ) }) } - asyncFecthAPI() + dispatch(setLocalisation({ ...localisation, fetchDone: true })) return undefined }, [localisation, iframeLocalisationOption, dispatch]) diff --git a/source/components/localisation/utils.ts b/source/components/localisation/utils.ts index 4010cfd3e4..1b2fc67784 100644 --- a/source/components/localisation/utils.ts +++ b/source/components/localisation/utils.ts @@ -35,8 +35,9 @@ export type SupportedRegions = { } export type Localisation = { - country: { code: RegionCode; name: string } - userChosen: boolean + country?: { code: RegionCode; name: string } + userChosen?: boolean + fetchDone?: boolean } export const defaultModelRegionCode = 'FR' diff --git a/source/reducers/rootReducer.ts b/source/reducers/rootReducer.ts index 90f18ec9d3..59fcd91b60 100644 --- a/source/reducers/rootReducer.ts +++ b/source/reducers/rootReducer.ts @@ -348,10 +348,10 @@ type LocalisationAction = { type: string } & Localisation function localisation( state = null, - { type, country, userChosen }: LocalisationAction + { type, country, userChosen, fetchDone = false }: LocalisationAction ): Localisation | null { if (type === 'SET_LOCALISATION') { - return { country, userChosen } + return { country, userChosen, fetchDone } } else if (type === 'RESET_LOCALISATION') { return null } else {