1import { RulesSource } from 'app/types/unified-alerting';
2import { useCallback } from 'react';
3import { GRAFANA_RULES_SOURCE_NAME } from '../utils/datasource';
4import { useUnifiedAlertingSelector } from './useUnifiedAlertingSelector';
5
6// datasource has ruler if it's grafana managed or if we're able to load rules from it
7export function useHasRuler(): (rulesSource: string | RulesSource) => boolean {
8  const rulerRules = useUnifiedAlertingSelector((state) => state.rulerRules);
9  return useCallback(
10    (rulesSource: string | RulesSource) => {
11      const rulesSourceName = typeof rulesSource === 'string' ? rulesSource : rulesSource.name;
12      return rulesSourceName === GRAFANA_RULES_SOURCE_NAME || !!rulerRules[rulesSourceName]?.result;
13    },
14    [rulerRules]
15  );
16}
17