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 {changeLang} from '../../lib/i18n';
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 {i18n} = useTranslation();
25 const language = i18n.language.toUpperCase();
26
27 const onChangeLang = (lang: Lang) => {
28 changeLang(lang);
29 if (connected) {
30 updateProfile({
31 variables: {
32 userUpdate: {
33 lang,
34 },
35 },
36 });
37 }
38 };
39
40 return (
41 <LanguageSelectionComponent
42 language={language}
43 onChangeLang={onChangeLang}
44 {...props}
45 />
46 );
47 };
48
49export default withLanguagesSelection;