import { useState } from 'react';

function useHandleChange<S>(
  initialState: S | (() => S)
): [S, (name: string, value: unknown) => void] {
  const [details, setDetails] = useState(initialState);

  function handleChange(name: string, value: unknown) {
    if (String(value).length !== String(value).trim().length) {
      if (typeof value === 'string') {
        value = value.toString().trim();
      }
    }

    setDetails((prevState: any) => ({
      ...prevState,
      [name]: value,
    }));
  }

  return [details, handleChange];
}

export default useHandleChange;
