all repos — caroster @ ceda4c783969e70cbca2e5d932085b1d544319dd

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

frontend/hooks/useLocale.ts (view raw)

 1import {Enum_Userspermissionsuser_Lang as SupportedLocales} from '../generated/graphql';
 2import {useRouter} from 'next/router';
 3import moment from 'moment';
 4import {setCookie} from '../lib/cookies';
 5import {useEffect} from 'react';
 6
 7// Import moment locales
 8import 'moment/locale/fr';
 9import 'moment/locale/de';
10import 'moment/locale/nl';
11
12const defaultLocale = SupportedLocales['en'];
13
14const useLocale = (): {
15  locale: SupportedLocales;
16  changeLocale: (locale: SupportedLocales) => void;
17} => {
18  const {pathname, query, asPath, push, locale} = useRouter();
19
20  const changeLocale = (newLocale: SupportedLocales) => {
21    moment.locale(newLocale);
22    setCookie('NEXT_LOCALE', newLocale);
23    push({pathname, query}, asPath, {locale: newLocale});
24  };
25
26  useEffect(() => {
27    if (!SupportedLocales[locale]) changeLocale(defaultLocale);
28  }, [locale]);
29
30  return {
31    changeLocale,
32    locale: SupportedLocales[locale] || defaultLocale,
33  };
34};
35
36export default useLocale;