import { useState, useCallback } from 'react';
import { fetchLiterals, saveLiteralsToApi, resetTelegramBot } from '../utils/api';

export const usePromptManager = () => {
  const [isSaving, setIsSaving] = useState(false);
  const [isLoading, setIsLoading] = useState(true);
  const [exportedPrompt, setExportedPrompt] = useState('');

  const generateExportedPrompt = useCallback((data: any) => {
    const { companies, commands, introText, strategiesText, rulesText, templateText, prompts } = data;
    
    const companyList = companies.map((company: any) =>
      `${company.name} (${company.popularity}, ${company.description})`
    ).join(', ');

    const commandsList = commands.map((cmd: any) =>
      `- ${cmd.command}: پرامپت: ${cmd.prompt}`
    ).join('\n');

    const sections = [
      introText,
      "استراتژی‌های گفتگو:",
      strategiesText,
      "قوانین گفتگو:",
      rulesText,
      prompts.companyRanking.replace("{لیست_شرکت_ها_و_مقدار_محبوبیت}", companyList),
      "دستورات لیترال:",
      commandsList,
      templateText
    ];

    return sections.join('\n\n');
  }, []);

  const saveLiterals = async (data: any) => {
    try {
      setIsSaving(true);
      const finalPrompt = generateExportedPrompt(data);
      
      await saveLiteralsToApi({
        ...data,
        finalPrompt
      });

      await resetTelegramBot();
      
      return true;
    } catch (error) {
      console.error('Error saving literals:', error);
      return false;
    } finally {
      setIsSaving(false);
    }
  };

  return {
    isSaving,
    isLoading,
    setIsLoading,
    exportedPrompt,
    setExportedPrompt,
    generateExportedPrompt,
    saveLiterals
  };
};
