import { useQuery } from 'react-query';

import { serviceManagementKeys } from '../queries';
import { getAgentGroup } from '../services';
import { AgentGroup, AgentGroupHydrated } from '../types';

type Props = {
  agentGroup: AgentGroup | AgentGroup['id'];
  onSuccess?: (agentGroup: AgentGroupHydrated) => void;
};

const useAgentGroupHydration = ({ agentGroup, onSuccess }: Props) => {
  const { data: agentGroupHydrated, isLoading } = useQuery(
    serviceManagementKeys.agentGroups.detail(agentGroup as string),
    () => getAgentGroup(agentGroup as string),
    {
      // Only hydrate if the agentGroup passed as prop is an id
      enabled: typeof agentGroup === 'string',
      select: data => data.data,
      onSuccess: group => {
        onSuccess?.(group);
      },
    },
  );

  return {
    agentGroupHydrated:
      typeof agentGroup === 'string' ? agentGroupHydrated : agentGroup,
    isLoading,
  };
};

export default useAgentGroupHydration;
