import { BlobReader, BlobWriter, ZipWriter } from '@zip.js/zip.js';

/**
 * temp solution for dowloading a list of cdn wav files
 * didn't use the existing downloadAsZip as it currently depends on clip Id
 * could refactor this into dowloadAsZip in the future or create clip objects for loops
 */
export default async function downloadAudioFilesAsZip(
  audioFiles: Array<{ url: string; filename: string }>,
  zipName: string
): Promise<void> {
  const zip = new ZipWriter(new BlobWriter('application/zip'));

  for (const file of audioFiles) {
    try {
      const response = await fetch(file.url);
      if (!response.ok) {
        continue;
      }

      const blob = await response.blob();
      await zip.add(file.filename, new BlobReader(blob));
    } catch (error) {
      continue; // Skip failed downloads
    }
  }

  const zipBlob = await zip.close();

  const url = window.URL.createObjectURL(zipBlob);
  const a = document.createElement('a');
  a.target = '_blank';
  a.href = url;
  a.download = `${zipName}.zip`;
  a.click();
  window.URL.revokeObjectURL(url);
}
