Client:Packages:Login:Fix double request to cultures
This commit is contained in:
parent
5366f41f37
commit
c4ae671ca3
@ -69,16 +69,24 @@ export default async function Layout({
|
|||||||
isComboboxVisible = false;
|
isComboboxVisible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let cultures;
|
||||||
|
if (isComboboxVisible) {
|
||||||
|
cultures = await getPortalCultures();
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{ width: "100%", height: "100%" }}>
|
<div style={{ width: "100%", height: "100%" }}>
|
||||||
<SimpleNav
|
<SimpleNav
|
||||||
culture={culture}
|
culture={culture}
|
||||||
|
initialCultures={cultures}
|
||||||
isLanguageComboboxVisible={isComboboxVisible}
|
isLanguageComboboxVisible={isComboboxVisible}
|
||||||
/>
|
/>
|
||||||
<ContentWrapper id="content-wrapper" bgPattern={bgPattern}>
|
<ContentWrapper id="content-wrapper" bgPattern={bgPattern}>
|
||||||
<div className="bg-cover" />
|
<div className="bg-cover" />
|
||||||
<Scrollbar id="customScrollBar">
|
<Scrollbar id="customScrollBar">
|
||||||
{isComboboxVisible && <LanguageComboboxWrapper />}
|
{isComboboxVisible && (
|
||||||
|
<LanguageComboboxWrapper initialCultures={cultures} />
|
||||||
|
)}
|
||||||
|
|
||||||
<StyledPage id="styled-page">{children}</StyledPage>
|
<StyledPage id="styled-page">{children}</StyledPage>
|
||||||
</Scrollbar>
|
</Scrollbar>
|
||||||
|
@ -33,25 +33,25 @@ import { setLanguageForUnauthorized } from "@docspace/shared/utils/common";
|
|||||||
import { LanguageCombobox } from "@docspace/shared/components/language-combobox";
|
import { LanguageCombobox } from "@docspace/shared/components/language-combobox";
|
||||||
import { DeviceType } from "@docspace/shared/enums";
|
import { DeviceType } from "@docspace/shared/enums";
|
||||||
import { Nullable } from "@docspace/shared/types";
|
import { Nullable } from "@docspace/shared/types";
|
||||||
import { getPortalCultures } from "@docspace/shared/api/settings";
|
|
||||||
import { TPortalCultures } from "@docspace/shared/api/settings/types";
|
import { TPortalCultures } from "@docspace/shared/api/settings/types";
|
||||||
|
|
||||||
import useDeviceType from "@/hooks/useDeviceType";
|
import useDeviceType from "@/hooks/useDeviceType";
|
||||||
|
|
||||||
const LanguageComboboxWrapper = () => {
|
type TLanguageComboboxWrapper = {
|
||||||
|
initialCultures?: TPortalCultures;
|
||||||
|
};
|
||||||
|
|
||||||
|
const LanguageComboboxWrapper = ({
|
||||||
|
initialCultures,
|
||||||
|
}: TLanguageComboboxWrapper) => {
|
||||||
const { i18n } = useTranslation(["Login", "Common"]);
|
const { i18n } = useTranslation(["Login", "Common"]);
|
||||||
const currentCulture = i18n.language;
|
const currentCulture = i18n.language;
|
||||||
|
|
||||||
const [cultures, setCultures] = useState<Nullable<TPortalCultures>>(null);
|
const [cultures, setCultures] = useState<Nullable<TPortalCultures>>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
if (initialCultures) setCultures(initialCultures);
|
||||||
const cultures = await getPortalCultures();
|
}, [initialCultures]);
|
||||||
if (cultures) setCultures(cultures);
|
|
||||||
};
|
|
||||||
|
|
||||||
fetchData();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const onLanguageSelect = (culture: { key: string }) => {
|
const onLanguageSelect = (culture: { key: string }) => {
|
||||||
const { key } = culture;
|
const { key } = culture;
|
||||||
|
@ -29,8 +29,8 @@
|
|||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import styled, { useTheme } from "styled-components";
|
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 { mobile } from "@docspace/shared/utils/device";
|
||||||
import { getLogoUrl } from "@docspace/shared/utils/common";
|
import { getLogoUrl } from "@docspace/shared/utils/common";
|
||||||
import { Base } from "@docspace/shared/themes";
|
import { Base } from "@docspace/shared/themes";
|
||||||
@ -38,8 +38,6 @@ import { WhiteLabelLogoType } from "@docspace/shared/enums";
|
|||||||
|
|
||||||
import LanguageComboboxWrapper from "./LanguageCombobox";
|
import LanguageComboboxWrapper from "./LanguageCombobox";
|
||||||
|
|
||||||
import { TYPE_LINK_WITHOUT_LNG_COMBOBOX } from "@/utils/constants";
|
|
||||||
|
|
||||||
const StyledSimpleNav = styled.div`
|
const StyledSimpleNav = styled.div`
|
||||||
display: none;
|
display: none;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
@ -66,11 +64,13 @@ StyledSimpleNav.defaultProps = { theme: Base };
|
|||||||
|
|
||||||
interface SimpleNavProps {
|
interface SimpleNavProps {
|
||||||
culture?: string;
|
culture?: string;
|
||||||
|
initialCultures?: TPortalCultures;
|
||||||
isLanguageComboboxVisible?: boolean;
|
isLanguageComboboxVisible?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const SimpleNav = ({
|
const SimpleNav = ({
|
||||||
culture,
|
culture,
|
||||||
|
initialCultures,
|
||||||
isLanguageComboboxVisible = true,
|
isLanguageComboboxVisible = true,
|
||||||
}: SimpleNavProps) => {
|
}: SimpleNavProps) => {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
@ -87,7 +87,9 @@ const SimpleNav = ({
|
|||||||
return (
|
return (
|
||||||
<StyledSimpleNav id="login-header">
|
<StyledSimpleNav id="login-header">
|
||||||
<img className="logo" src={logoUrl} alt="logo-url" />
|
<img className="logo" src={logoUrl} alt="logo-url" />
|
||||||
{isLanguageComboboxVisible && <LanguageComboboxWrapper />}
|
{isLanguageComboboxVisible && (
|
||||||
|
<LanguageComboboxWrapper initialCultures={initialCultures} />
|
||||||
|
)}
|
||||||
</StyledSimpleNav>
|
</StyledSimpleNav>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user