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 {