import { useCallback } from 'react';
import { useForm } from 'react-hook-form';

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

import { type JobOfferPublishForm } from '../../types';
import { JobOfferPublishFormResolver } from '../utils';

export type UsePublishFormProps = {
  initialValues?: JobOfferPublishForm;
};

export const usePublishForm = ({ initialValues }: UsePublishFormProps) => {
  const { t } = useLokaliseTranslation(['ats']);

  const jobPublishFormResolver = useCallback(
    (values: JobOfferPublishForm) => {
      return JobOfferPublishFormResolver(values, t);
    },
    [t],
  );

  const publishForm = useForm<JobOfferPublishForm>({
    defaultValues: initialValues || { title: '', description: '' },
    mode: 'onTouched',
    reValidateMode: 'onChange',
    shouldUnregister: false,
    resolver: jobPublishFormResolver,
  });

  return publishForm;
};
