import { useMutation, useQuery } from 'react-query';

import { queryClient } from 'src/config/react-query';

import { serviceManagementKeys } from '../../queries';
import {
  getServiceTableDisabledColumns,
  updateServiceTableDisabledColumns,
} from '../../services';

const useServiceTableColumns = () => {
  const {
    data: disabledColumns,
    isLoading,
    isError,
  } = useQuery({
    queryKey: serviceManagementKeys.serviceTableDisabledColumns(),
    queryFn: () => getServiceTableDisabledColumns(),
    select: response => response.data.disabledColumns,
  });

  const updateDisabledColumnsMutation = useMutation({
    mutationFn: (disabledColumns: string[]) =>
      updateServiceTableDisabledColumns(disabledColumns),
    onSuccess: () => {
      queryClient.invalidateQueries(
        serviceManagementKeys.serviceTableDisabledColumns(),
      );
    },
  });

  return {
    disabledColumns: disabledColumns ?? [],
    isLoading,
    isError,
    updateDisabledColumnsMutation: updateDisabledColumnsMutation,
  };
};

export default useServiceTableColumns;
