/** * Organization AI data extraction hook * Handles AI-powered data extraction and generation for organizations * Separated from form logic for better SRP */ import { useCallback } from 'react'; import { useExtractDataFromFile, useExtractDataFromText, useGenerateOrganizationDescription, } from '@/hooks/useGemini.ts'; import { useTranslation } from '@/hooks/useI18n.tsx'; interface UseOrganizationAIProps { formData: { description: string; name: string; sector: string; tags: string[]; }; } export const useOrganizationAI = ({ formData }: UseOrganizationAIProps) => { const { t } = useTranslation(); const { refetch: extractFromText, isPending: isExtractingFromText } = useExtractDataFromText( formData.description, t ); const { refetch: extractFromFile, isPending: isExtractingFromFile } = useExtractDataFromFile( new File([], ''), t ); const { refetch: generateDescription, isPending: isGeneratingDescription } = useGenerateOrganizationDescription(formData.name, formData.sector, formData.tags.join(', '), t); const extractDataFromText = useCallback(async () => { const result = await extractFromText(); return result.data; }, [extractFromText]); const extractDataFromFile = useCallback(async () => { // Note: This would need to be updated to accept file parameter // For now, returning placeholder const result = await extractFromFile(); return result.data; }, [extractFromFile]); const generateOrganizationDescription = useCallback(async () => { const result = await generateDescription(); return result.data; }, [generateDescription]); const isAnyAIOperationPending = isExtractingFromText || isExtractingFromFile || isGeneratingDescription; return { extractDataFromText, extractDataFromFile, generateOrganizationDescription, isExtractingFromText, isExtractingFromFile, isGeneratingDescription, isAnyAIOperationPending, }; };