Client:Packages:Login:Fix double request to cultures

This commit is contained in:
Darya Umrikhina 2024-08-22 17:21:13 +04:00
parent 5366f41f37
commit c4ae671ca3
3 changed files with 24 additions and 14 deletions

View File

@ -69,16 +69,24 @@ export default async function Layout({
isComboboxVisible = false;
}
let cultures;
if (isComboboxVisible) {
cultures = await getPortalCultures();
}
return (
<div style={{ width: "100%", height: "100%" }}>
<SimpleNav
culture={culture}
initialCultures={cultures}
isLanguageComboboxVisible={isComboboxVisible}
/>
<ContentWrapper id="content-wrapper" bgPattern={bgPattern}>
<div className="bg-cover" />
<Scrollbar id="customScrollBar">
{isComboboxVisible && <LanguageComboboxWrapper />}
{isComboboxVisible && (
<LanguageComboboxWrapper initialCultures={cultures} />
)}
<StyledPage id="styled-page">{children}</StyledPage>
</Scrollbar>

View File

@ -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<Nullable<TPortalCultures>>(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;

View File

@ -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 (
<StyledSimpleNav id="login-header">
<img className="logo" src={logoUrl} alt="logo-url" />
{isLanguageComboboxVisible && <LanguageComboboxWrapper />}
{isLanguageComboboxVisible && (
<LanguageComboboxWrapper initialCultures={initialCultures} />
)}
</StyledSimpleNav>
);
};