import { useModal } from '@material-hu/hooks/useModal';
import { LoadingButtonProps as ButtonProps } from '@material-hu/mui/lab/LoadingButton';

import HuDialog from '@material-hu/components/design-system/Dialog';

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

export function useConfirmActionModal({
  onConfirm,
  onCancel,
  onDismiss,
  title,
  description,
  primaryButtonProps,
  secondaryButtonProps,
}: {
  onConfirm?: () => void;
  onCancel?: (triggeringClose?: boolean) => void;
  onDismiss?: () => void;
  title?: string;
  description?: string;
  primaryButtonProps?: ButtonProps;
  secondaryButtonProps?: ButtonProps;
}) {
  const { t } = useLokaliseTranslation('general');
  const confirmChangesModal = useModal(
    HuDialog,
    { maxWidth: 'sm' },
    {
      onClose: () => {
        confirmChangesModal?.closeModal();
        onDismiss?.();
      },
      title: title,
      textBody: description,
      primaryButtonProps: {
        children: primaryButtonProps?.children || t('general:exit'),
        onClick: () => {
          confirmChangesModal?.closeModal();
          onConfirm?.();
        },
        ...primaryButtonProps,
      },
      secondaryButtonProps: {
        children: secondaryButtonProps?.children || t('general:cancel'),
        onClick: () => {
          confirmChangesModal.closeModal();
          onCancel?.();
        },
        ...secondaryButtonProps,
      },
    },
  );

  return confirmChangesModal;
}
