Web: Added getting indexes for the form gallery to restore supported language.

This commit is contained in:
Tatiana Lopaeva 2024-04-26 10:43:28 +03:00
parent 5eda0f0abb
commit 0fa1ac4ec2
8 changed files with 56 additions and 56 deletions

View File

@ -99,9 +99,11 @@ const HeaderUnAuth = ({
const currentCultureName = i18n.language;
const onSelect = (culture) => {
i18n.changeLanguage(culture);
const { key } = culture;
setCookie(LANGUAGE, culture, {
i18n.changeLanguage(key);
setCookie(LANGUAGE, key, {
"max-age": COOKIE_EXPIRATION_YEAR,
});

View File

@ -478,9 +478,11 @@ const CreateUserForm = (props) => {
: {};
const onSelect = (culture) => {
i18n.changeLanguage(culture);
const { key } = culture;
setCookie(LANGUAGE, culture, {
i18n.changeLanguage(key);
setCookie(LANGUAGE, key, {
"max-age": COOKIE_EXPIRATION_YEAR,
});

View File

@ -31,10 +31,28 @@ import { inject, observer } from "mobx-react";
import { RectangleSkeleton } from "@docspace/shared/skeletons";
import { LanguageCombobox } from "@docspace/shared/components/language-combobox";
const keyedCollections = {
ar: "ar-SA",
en: "en-US",
el: "el-GR",
hy: "hy-AM",
ko: "ko-KR",
lo: "lo-LA",
pt: "pt-BR",
uk: "uk-UA",
ja: "ja-JP",
zh: "zh-CN",
};
const convertToCulture = (key) => {
return keyedCollections[key] ?? key;
};
const getOformLocaleByIndex = (index, array) => {
return array[index];
};
const LanguageFilter = ({
t,
oformsFilter,
defaultOformLocale,
oformLocales,
filterOformsByLocale,
filterOformsByLocaleIsLoading,
@ -42,9 +60,14 @@ const LanguageFilter = ({
categoryFilterLoaded,
languageFilterLoaded,
oformFilesLoaded,
oformsCurrentLocal,
}) => {
const convertedLocales = oformLocales.map((item) => convertToCulture(item));
const onFilterByLocale = async (newLocale) => {
await filterOformsByLocale(newLocale);
const key = getOformLocaleByIndex(newLocale.index, oformLocales);
await filterOformsByLocale(key);
const [sectionScroll] = document.getElementsByClassName("section-scroll");
sectionScroll.scrollTop = 0;
@ -62,18 +85,16 @@ const LanguageFilter = ({
return (
<LanguageCombobox
cultures={oformLocales}
cultures={convertedLocales}
isAuthenticated
onSelectLanguage={onFilterByLocale}
selectedCulture={oformsFilter.locale}
selectedCulture={convertToCulture(oformsCurrentLocal)}
id="comboBoxLanguage"
/>
);
};
export default inject(({ oformsStore }) => ({
oformsFilter: oformsStore.oformsFilter,
defaultOformLocale: oformsStore.defaultOformLocale,
oformLocales: oformsStore.oformLocales,
filterOformsByLocale: oformsStore.filterOformsByLocale,
filterOformsByLocaleIsLoading: oformsStore.filterOformsByLocaleIsLoading,
@ -81,4 +102,5 @@ export default inject(({ oformsStore }) => ({
categoryFilterLoaded: oformsStore.categoryFilterLoaded,
languageFilterLoaded: oformsStore.languageFilterLoaded,
oformFilesLoaded: oformsStore.oformFilesLoaded,
oformsCurrentLocal: oformsStore.oformsCurrentLocal,
}))(withTranslation(["Common"])(observer(LanguageFilter)));

View File

@ -41,14 +41,10 @@ import {
} from "@docspace/shared/api/oforms";
import { toastr } from "@docspace/shared/components/toast";
import {
convertToCulture,
convertToLanguage,
} from "@docspace/shared/utils/common";
import { convertToLanguage } from "@docspace/shared/utils/common";
import { LANGUAGE } from "@docspace/shared/constants";
import { getCookie } from "@docspace/shared/utils/cookie";
import { combineUrl } from "@docspace/shared/utils/combineUrl";
import { flagsIcons } from "@docspace/shared/utils/image-flags";
const myDocumentsFolderId = 2;
@ -115,11 +111,7 @@ class OformsStore {
this.infoPanelStore.setInfoPanelSelection(gallerySelected);
};
setOformLocales = (oformLocales) => {
const convertedLocales = oformLocales.map((item) => convertToCulture(item));
this.oformLocales = convertedLocales;
};
setOformLocales = (oformLocales) => (this.oformLocales = oformLocales);
setFilterOformsByLocaleIsLoading = (filterOformsByLocaleIsLoading) => {
this.filterOformsByLocaleIsLoading = filterOformsByLocaleIsLoading;
@ -385,6 +377,10 @@ class OformsStore {
get hasMoreForms() {
return this.oformFiles.length < this.oformsFilterTotal;
}
get oformsCurrentLocal() {
return this.oformsFilter.locale;
}
}
export default OformsStore;

View File

@ -146,10 +146,12 @@ const Login: React.FC<ILoginProps> = ({
cookieSettingsEnabled: false,
};
const onLanguageSelect = (culture: string) => {
i18n.changeLanguage(culture);
const onLanguageSelect = (culture: { key: string }) => {
const { key } = culture;
setCookie(LANGUAGE, culture, {
i18n.changeLanguage(key);
setCookie(LANGUAGE, key, {
"max-age": COOKIE_EXPIRATION_YEAR,
});
};

View File

@ -57,7 +57,7 @@ const LanguageCombobox = (props: ComboboxProps) => {
const onSelect = (culture: TCulture) => {
if (culture.key === selectedCulture) return;
onSelectLanguage(culture.key);
onSelectLanguage(culture);
};
if (!currentCulture) return <></>;

View File

@ -28,13 +28,14 @@ export type TCulture = {
key: string;
icon: string;
label?: string;
index?: number;
};
export type TCultures = TCulture[];
export interface ComboboxProps {
selectedCulture: string;
cultures: string[];
onSelectLanguage: (culture: string) => void;
onSelectLanguage: (culture: TCulture) => void;
/** Accepts id */
id?: string;
/** Accepts class */

View File

@ -481,33 +481,6 @@ export function convertLanguage(key: string) {
}
}
export function convertToCulture(key: string) {
switch (key) {
case "ar":
return "ar-SA";
case "en":
return "en-US";
case "el":
return "el-GR";
case "hy":
return "hy-AM";
case "ko":
return "ko-KR";
case "lo":
return "lo-LA";
case "pt":
return "pt-BR";
case "uk":
return "uk-UA";
case "ja":
return "ja-JP";
case "zh":
return "zh-CN";
default:
return key;
}
}
export function convertToLanguage(key: string) {
if (!key) return;
@ -1052,20 +1025,22 @@ export const mapCulturesToArray = (
) => {
if (i18nArg) {
const t = i18nArg.getFixedT(null, "Common");
return culturesArg.map((culture) => {
return culturesArg.map((culture, index) => {
return {
key: culture,
label: t(`Culture_${culture}`),
icon: flagsIcons?.get(`${culture}.react.svg`),
...(isBetaBadge && { isBeta: isBetaLanguage(culture) }),
index,
};
});
}
return culturesArg.map((culture) => {
return culturesArg.map((culture, index) => {
return {
key: culture,
icon: flagsIcons?.get(`${culture}.react.svg`),
index,
};
});
};