import audioContext from '@/lib/audioContext';
import { isSafari, safariDecodeAudioBuffer } from '@/lib/safariAudioUtils';

const decodeAudioFromArrayBuffer = (
  arrayBuffer: ArrayBuffer
): Promise<AudioBuffer> => {
  return new Promise(async (resolve, reject) => {
    try {
      if (isSafari()) {
        const audioBuffer = await safariDecodeAudioBuffer(arrayBuffer);
        resolve(audioBuffer);
      } else {
        const audioBuffer = audioContext.decodeAudioData(arrayBuffer);
        resolve(audioBuffer);
      }
    } catch (error) {
      reject(new Error(`Audio decoding failed: ${error}`));
    }
  });
};

export default decodeAudioFromArrayBuffer;
