all repos — caroster @ 74feaa47d697b06162103be5cb9fa26bac349ef9

[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 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;