all repos — caroster @ c69db1134f4b237980f3a33c65e140c7ba4a10c7

[Octree] Group carpool to your event https://caroster.io

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;