import { useState } from 'react';

import { useModal } from '@material-hu/hooks/useModal';

import Dialog, {
  type DialogProps,
} from '@material-hu/components/design-system/Dialog';

import { useLokaliseTranslation } from 'src/utils/i18n';

export const useCloseJobOfferErrorModal = ({
  onConfirm,
}: {
  onConfirm: () => void;
}) => {
  const { t } = useLokaliseTranslation('ats');
  const [count, setCount] = useState<number>(1);

  const { closeModal, ...modalProps } = useModal<
    { count?: number } & DialogProps
  >(
    Dialog,
    {
      fullWidth: true,
    },
    {
      title: t('job_offers.alerts.job_close.error.title'),
      textBody: t('job_offers.alerts.job_close.error.description'),
      primaryButtonProps: {
        children: t('job_offers.alerts.job_close.error.confirm', { count }),
        onClick: () => {
          onConfirm();
        },
      },
      secondaryButtonProps: {
        children: t('general:cancel'),
        onClick: () => {
          closeModal();
        },
      },
    },
  );

  const onOpenModal = (candidatesCount: number) => {
    setCount(candidatesCount);
    modalProps.showModal();
  };

  const onCloseModal = () => {
    setCount(1);
    closeModal();
  };

  return { ...modalProps, closeModal: onCloseModal, showModal: onOpenModal };
};
