all repos — caroster @ d8b50fcea8125de6998c9781d73e18b9372aff9e

[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';
 4
 5const useLocale = (): {
 6  locale: SupportedLocales;
 7  changeLocale: (locale: SupportedLocales) => void;
 8} => {
 9  const {pathname, query, asPath, push, locale} = useRouter();
10
11  const changeLocale = (newLocale: SupportedLocales) => {
12    moment.locale(newLocale);
13    if (typeof document !== 'undefined') {
14      document.cookie = `NEXT_LOCALE=${newLocale}; max-age=31536000; path=/`;
15    }
16    push({pathname, query}, asPath, {locale: newLocale});
17  };
18
19  if (SupportedLocales[locale]) {
20    return {locale: SupportedLocales[locale], changeLocale};
21  }
22
23  const defaultLocale = SupportedLocales['en'];
24  changeLocale(defaultLocale);
25  return {locale: defaultLocale, changeLocale};
26};
27
28export default useLocale;