import { useContext } from 'react';

import type { UiAccessibleConfig } from '@redocly/theme/config';

import { ThemeDataContext } from '@redocly/theme/core/contexts';

// TODO: rename and additionally export as alias for backward compatibility
export function useThemeConfig<T extends Record<string, unknown>>(
  useProductConfig: boolean = true,
): T & NonNullable<UiAccessibleConfig> {
  const context = useContext(ThemeDataContext);

  if (!context?.config) {
    return {} as T;
  }
  const { config, hooks } = context;
  const { useCurrentProduct } = hooks;
  // eslint-disable-next-line react-hooks/rules-of-hooks
  const currentProduct = useCurrentProduct();

  const mergedConfig =
    useProductConfig && currentProduct?.configOverride
      ? {
          ...config,
          ...currentProduct.configOverride,
          // Do not override analytics config from product
          analytics: config.analytics,
        }
      : config;

  return mergedConfig as T;
}
