import { fetchClip } from '@/hooks/useClip';
import { getMidiForClip } from '@/hooks/useMidiTranscript';
import { Clip, ClipsStore } from '@/state/clipStore';
import jsonToMidi from '@/utils/midi';

import downloadBlob from '../edit2025/downloadBlob';

export default async function downloadAsMIDI(
  clipsStore: ClipsStore,
  clip: Clip,
  title: string,
  downbeats: [number, number][]
) {
  const terminalClip = await fetchClip(clipsStore, clip.id, true);
  const midi = await getMidiForClip(clipsStore.apiClient, terminalClip.id);
  const blob = jsonToMidi(
    title || null,
    midi,
    downbeats,
    terminalClip.metadata.key || null,
    null
  );
  if (!blob) {
    return false;
  }
  downloadBlob(blob, `${title}.mid`);
  return true;
}
