import { useEffect, useMemo } from 'react';
import AudioProcessor from './AudioProcessor';
import { ProjectState } from './types';

const useAudioProcessor = (apiKey: string, audioContext: AudioContext, state: ProjectState) => {
  const processor = useMemo(() => new AudioProcessor(apiKey, audioContext), [apiKey, audioContext]);

  useEffect(
    () => {
      processor.setProjectState(state);
    },
    [state, processor]
  );

  return processor;
};

export default useAudioProcessor;
