import { StudyPack } from '../types';
const apiPath = new URL('api/generate', window.location.href).toString();

export async function generateStudyPack(subject: string, notes: string): Promise<Omit<StudyPack, 'id' | 'createdAt' | 'subject'>> {
  const response = await fetch(apiPath, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ subject, notes }),
  });

  const rawBody = await response.text();
  let data: ({ error?: string } & Partial<Omit<StudyPack, 'id' | 'createdAt' | 'subject'>>) | null = null;

  if (rawBody.trim()) {
    try {
      data = JSON.parse(rawBody);
    } catch {
      throw new Error('Study pack service returned an invalid response. Please try again.');
    }
  }

  if (!response.ok) {
    throw new Error(data?.error || 'Failed to generate study pack.');
  }

  if (!data) {
    throw new Error('Study pack service returned an empty response. Please try again.');
  }

  return data as Omit<StudyPack, 'id' | 'createdAt' | 'subject'>;
}
