import React, { useEffect } from 'react' import Modal from '../ui/Modal' import Button from '../ui/Button' import { useForm } from '@/app/hooks/useForm' import showToast from '../ui/Toast' import TextInput from '../ui/TextInput' import TextAreaInput from '../ui/TextAreaInput' import PhoneInput from '../ui/PhoneInput' import useUserStore from '@/app/store/userStore' import { sendLead } from '@/lib/main/sendLead' const validationRules = { name: { required: true }, phone_number: { required: true }, email: { required: true }, moving_price: { required: true }, moving_date: { required: true }, comment: { required: false }, } interface LeadPopupProps { id: number isOpen: boolean onClose: () => void onSuccess: () => void } const LeadPopup = ({ id, isOpen, onClose, onSuccess }: LeadPopupProps) => { const { user } = useUserStore() const today = new Date().toISOString().split('T')[0] const initialValues = { name: user?.name || '', phone_number: user?.phone_number || '', email: user?.email || '', moving_price: '', moving_date: '', comment: '', id: id, } const { values, handleChange, handleSubmit, setValues } = useForm( initialValues, validationRules, async values => { try { await sendLead(values) showToast({ type: 'success', message: 'Сообщение отправлено!', }) onSuccess() } catch { showToast({ type: 'error', message: 'Упс, что то пошло не так...', }) } } ) //форма инициализируется до того, как данные пользователя загружаются из стора, поэтому нужно обновлять значения формы при загрузке данных пользователя useEffect(() => { if (user) { setValues(prev => ({ ...prev, name: user.name, phone_number: user.phone_number || '', email: user.email || '', })) } }, [user, setValues]) return (
) } export default LeadPopup