From 2afd36fee00b48d55b749cae80aae5d73717ed87 Mon Sep 17 00:00:00 2001 From: garronej Date: Thu, 1 Sep 2022 21:16:25 +0200 Subject: [PATCH] Avoid fetching locale twitch (react 18 useEffect) --- src/lib/i18n/index.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib/i18n/index.tsx b/src/lib/i18n/index.tsx index 2d9d8bb2..5e63620e 100644 --- a/src/lib/i18n/index.tsx +++ b/src/lib/i18n/index.tsx @@ -1,6 +1,6 @@ import "minimal-polyfills/Object.fromEntries"; //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35 -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState, useRef } from "react"; import ReactMarkdown from "react-markdown"; import type baseMessages from "./generated_messages/18.0.1/login/en"; import { assert } from "tsafe/assert"; @@ -76,13 +76,17 @@ export function __unsafe_useI18n(params: const [i18n, setI18n] = useState | undefined>(undefined); + const refHasStartedFetching = useRef(false); + useEffect(() => { - if (doSkip) { + if (doSkip || refHasStartedFetching.current) { return; } let isMounted = true; + refHasStartedFetching.current = true; + (async () => { const { currentLanguageTag = fallbackLanguageTag } = kcContext.locale ?? {};