frontend/containers/Languages/withLanguagesSelection.tsx (view raw)
1import useProfile from '../../hooks/useProfile';
2import {
3 useUpdateMeMutation,
4 Enum_Userspermissionsuser_Lang as Lang,
5} from '../../generated/graphql';
6import {useTranslation} from 'react-i18next';
7import useLocale from '../../hooks/useLocale';
8
9export interface LanguageSelectionComponentProps {
10 language: Lang;
11 Lang;
12 onChangeLang: (lang: Lang) => void;
13}
14
15const withLanguagesSelection =
16 (
17 LanguageSelectionComponent: (
18 args: LanguageSelectionComponentProps
19 ) => JSX.Element
20 ) =>
21 props => {
22 const {connected} = useProfile();
23 const [updateProfile] = useUpdateMeMutation();
24 const {changeLocale} = useLocale();
25 const {i18n} = useTranslation();
26 const language = i18n.language;
27
28 const onChangeLang = async (lang: Lang) => {
29 if (connected) {
30 await updateProfile({
31 variables: {
32 userUpdate: {
33 lang,
34 },
35 },
36 });
37 }
38 changeLocale(lang);
39 };
40
41 return (
42 <LanguageSelectionComponent
43 language={language}
44 onChangeLang={onChangeLang}
45 {...props}
46 />
47 );
48 };
49
50export default withLanguagesSelection;