import { useCallback } from 'react';
import { FormBuilderProp } from 'Form/Form';
import { useFormikContext } from 'formik';

export default function useFormValue<
  TForm extends object,
  TPropKey extends keyof TForm
>(formBuilder: FormBuilderProp<TForm>, fieldName: TPropKey) {
  const { values, setFieldValue } = useFormikContext<TForm>();
  const setValue = useCallback(
    (value: TForm[TPropKey]) => setFieldValue(fieldName as string, value),
    [fieldName, setFieldValue]
  );

  return [values[fieldName], setValue] as const;
}
