import { Locale } from 'date-fns';
import { useMemo } from 'react';

import { useHiveUIContext } from '../contexts/HiveUIContext';

import { useLocale } from './useLocale';
import { useTranslation } from './useTranslation';

export function useDateFnsLocale(): Locale {
  const locale = useLocale();
  const { i18n } = useTranslation();
  const { languages } = useHiveUIContext();
  const currentLanguage = i18n.language;

  // We can use non-null assertion operator here because language configuration was validated in HiveUI component
  return useMemo(() => {
    const currentLanguageConfig = languages.find((lang) => lang.language === currentLanguage)!;
    return currentLanguageConfig.locales[locale]!.dateFns;
  }, [locale, languages, currentLanguage]);
}
