import { useCallback } from 'react'; import { OrganizationFormData } from '@/types.ts'; import { useWizard } from '@/hooks/useWizard.ts'; import { useOrganizationAI } from '@/hooks/features/useOrganizationAI.ts'; import { useOrganizationForm } from '@/hooks/features/useOrganizationForm.ts'; interface UseOrganizationWizardProps { onSuccess: (data: OrganizationFormData) => void; } export const useOrganizationWizard = ({ onSuccess }: UseOrganizationWizardProps) => { const wizardState = useWizard(3); const { goToStep } = wizardState; const formManager = useOrganizationForm({ onSuccess }); const aiManager = useOrganizationAI({ formData: { description: formManager.watch('description'), name: formManager.watch('name'), sector: formManager.watch('sector'), tags: formManager.watch('tags'), }, }); const handleNext = useCallback(async () => { let fieldsToValidate: (keyof OrganizationFormData | 'location.lat' | 'location.lng')[] = []; if (wizardState.currentStep === 2) { fieldsToValidate = [ 'name', 'sector', 'description', 'business_focus', 'founding_year', 'location.lat', 'location.lng', ]; } const isValidStep = await formManager.validateFields(fieldsToValidate); if (isValidStep) { wizardState.nextStep(); } }, [wizardState, formManager]); const resetWizard = useCallback(() => { formManager.resetForm(); goToStep(1); }, [formManager, goToStep]); return { wizardState, form: { control: formManager.form.control, errors: formManager.form.formState.errors, isValid: formManager.form.formState.isValid, handleSubmit: formManager.form.handleSubmit, watch: formManager.watch, setValue: formManager.setValue, formState: formManager.form.formState, }, smartFill: { extractFromText: aiManager.extractDataFromText, isExtractingFromText: aiManager.isExtractingFromText, }, descriptionGeneration: { generateDescription: aiManager.generateOrganizationDescription, isGeneratingDescription: aiManager.isGeneratingDescription, }, actions: { handleNext, onSubmit: formManager.onSubmit, resetWizard, }, }; };