From c4ae671ca394bcf00612dc604745afe4d9021ee3 Mon Sep 17 00:00:00 2001 From: Darya Umrikhina Date: Thu, 22 Aug 2024 17:21:13 +0400 Subject: [PATCH] Client:Packages:Login:Fix double request to cultures --- packages/login/src/app/(root)/layout.tsx | 10 +++++++++- .../src/components/LanguageCombobox/index.tsx | 18 +++++++++--------- packages/login/src/components/SimpleNav.tsx | 10 ++++++---- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/packages/login/src/app/(root)/layout.tsx b/packages/login/src/app/(root)/layout.tsx index da87052cf6..ed68b462fa 100644 --- a/packages/login/src/app/(root)/layout.tsx +++ b/packages/login/src/app/(root)/layout.tsx @@ -69,16 +69,24 @@ export default async function Layout({ isComboboxVisible = false; } + let cultures; + if (isComboboxVisible) { + cultures = await getPortalCultures(); + } + return (
- {isComboboxVisible && } + {isComboboxVisible && ( + + )} {children} diff --git a/packages/login/src/components/LanguageCombobox/index.tsx b/packages/login/src/components/LanguageCombobox/index.tsx index ce924cff92..24216947e7 100644 --- a/packages/login/src/components/LanguageCombobox/index.tsx +++ b/packages/login/src/components/LanguageCombobox/index.tsx @@ -33,25 +33,25 @@ import { setLanguageForUnauthorized } from "@docspace/shared/utils/common"; import { LanguageCombobox } from "@docspace/shared/components/language-combobox"; import { DeviceType } from "@docspace/shared/enums"; import { Nullable } from "@docspace/shared/types"; -import { getPortalCultures } from "@docspace/shared/api/settings"; import { TPortalCultures } from "@docspace/shared/api/settings/types"; import useDeviceType from "@/hooks/useDeviceType"; -const LanguageComboboxWrapper = () => { +type TLanguageComboboxWrapper = { + initialCultures?: TPortalCultures; +}; + +const LanguageComboboxWrapper = ({ + initialCultures, +}: TLanguageComboboxWrapper) => { const { i18n } = useTranslation(["Login", "Common"]); const currentCulture = i18n.language; const [cultures, setCultures] = useState>(null); useEffect(() => { - const fetchData = async () => { - const cultures = await getPortalCultures(); - if (cultures) setCultures(cultures); - }; - - fetchData(); - }, []); + if (initialCultures) setCultures(initialCultures); + }, [initialCultures]); const onLanguageSelect = (culture: { key: string }) => { const { key } = culture; diff --git a/packages/login/src/components/SimpleNav.tsx b/packages/login/src/components/SimpleNav.tsx index 454cfe1fc7..d55a169426 100644 --- a/packages/login/src/components/SimpleNav.tsx +++ b/packages/login/src/components/SimpleNav.tsx @@ -29,8 +29,8 @@ import React from "react"; import styled, { useTheme } from "styled-components"; -import { useSearchParams } from "next/navigation"; +import { TPortalCultures } from "@docspace/shared/api/settings/types"; import { mobile } from "@docspace/shared/utils/device"; import { getLogoUrl } from "@docspace/shared/utils/common"; import { Base } from "@docspace/shared/themes"; @@ -38,8 +38,6 @@ import { WhiteLabelLogoType } from "@docspace/shared/enums"; import LanguageComboboxWrapper from "./LanguageCombobox"; -import { TYPE_LINK_WITHOUT_LNG_COMBOBOX } from "@/utils/constants"; - const StyledSimpleNav = styled.div` display: none; height: 48px; @@ -66,11 +64,13 @@ StyledSimpleNav.defaultProps = { theme: Base }; interface SimpleNavProps { culture?: string; + initialCultures?: TPortalCultures; isLanguageComboboxVisible?: boolean; } const SimpleNav = ({ culture, + initialCultures, isLanguageComboboxVisible = true, }: SimpleNavProps) => { const theme = useTheme(); @@ -87,7 +87,9 @@ const SimpleNav = ({ return ( logo-url - {isLanguageComboboxVisible && } + {isLanguageComboboxVisible && ( + + )} ); };