InitializeApp.tsx 768 B

123456789101112131415161718192021222324252627
  1. import React, { useEffect, useState } from "react";
  2. import { LoadingMessage } from "./LoadingMessage";
  3. import { defaultLang, Language, languages, setLanguage } from "../i18n";
  4. import { Theme } from "../element/types";
  5. interface Props {
  6. langCode: Language["code"];
  7. children: React.ReactElement;
  8. theme?: Theme;
  9. }
  10. export const InitializeApp = (props: Props) => {
  11. const [loading, setLoading] = useState(true);
  12. useEffect(() => {
  13. const updateLang = async () => {
  14. await setLanguage(currentLang);
  15. setLoading(false);
  16. };
  17. const currentLang =
  18. languages.find((lang) => lang.code === props.langCode) || defaultLang;
  19. updateLang();
  20. }, [props.langCode]);
  21. return loading ? <LoadingMessage theme={props.theme} /> : props.children;
  22. };