import { v4 as uuidv4 } from 'uuid';

import { Clip } from '@/state/clipStore';

import describeClip from './describeClipTiming';
import { StudioClip } from './types';

// note: expects to be played at 1bps
export default function createPreviewStudioClipSync(
  clip: Clip,
  includeContextWindow: boolean = false
): StudioClip {
  const { contentStartSeconds, contentDurationSeconds } = describeClip(clip);

  const finalContentStartSeconds = includeContextWindow
    ? 0
    : contentStartSeconds;
  const finalContentDurationSeconds = includeContextWindow
    ? 999
    : (contentDurationSeconds ?? 999);

  const warp = {
    enabled: false,
    markers: { 0: 0 },
    awaitingAnalysis: false,
    speed: 1,
  };

  return {
    streaming: clip.status !== 'complete',
    id: uuidv4(),
    clipId: clip.id,
    uploadId: null,
    mute: false,
    name: 'PREVIEW CLIP',
    color: '#000000',
    startBeats: 0,
    endBeats: finalContentDurationSeconds,
    readStartBeats: finalContentStartSeconds,
    fadeInBeats: 0,
    fadeOutBeats: 0,
    transposition: 0,
    amplitude: 1,
    loop: {
      enabled: false,
      startBeats: finalContentStartSeconds,
      endBeats: finalContentStartSeconds + finalContentDurationSeconds,
    },
    warp,
  };
}
