import { useCallback } from 'react';

import { useStores } from '@/app/(root)/AppProviders';

export function useGenerateLyrics() {
  const { genForm } = useStores();

  const generateLyrics = useCallback(
    async ({
      lyricsModel,
      prompt,
    }: {
      lyricsModel: string;
      prompt: string;
    }) => {
      const generateResult = await genForm.apiClient.POST(
        '/api/generate/lyrics-pair',
        {
          body: {
            prompt,
            lyrics_model: lyricsModel,
            create_session_token: genForm.createSessionToken,
            source: 'create_ui',
          },
        }
      );

      if (generateResult.error) {
        throw new Error(
          (generateResult as any).error?.message ||
            (generateResult as any).error ||
            'Unknown error'
        );
      }

      return {
        requestId: generateResult.data.lyrics_request_id,
        lyricsAId: generateResult.data.lyrics_a_id,
        lyricsBId: generateResult.data.lyrics_b_id,
      };
    },
    [genForm.createSessionToken, genForm.apiClient]
  );

  return generateLyrics;
}
