all repos — caroster @ 1bea64d2ff9f4e00589034a0c18c9204afb83c27

[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
 7const defaultLocale = SupportedLocales['en'];
 8
 9const useLocale = (): {
10  locale: SupportedLocales;
11  changeLocale: (locale: SupportedLocales) => void;
12} => {
13  const {pathname, query, asPath, push, locale} = useRouter();
14
15  const changeLocale = (newLocale: SupportedLocales) => {
16    moment.locale(newLocale);
17    setCookie('NEXT_LOCALE', newLocale);
18    push({pathname, query}, asPath, {locale: newLocale});
19  };
20
21  useEffect(() => {
22    if (!SupportedLocales[locale]) changeLocale(defaultLocale);
23  }, [locale]);
24
25  return {
26    changeLocale,
27    locale: SupportedLocales[locale] || defaultLocale,
28  };
29};
30
31export default useLocale;