'use client' import React, { useState, useEffect } from 'react' import { useForm } from 'react-hook-form' import { yupResolver } from '@hookform/resolvers/yup' import * as yup from 'yup' import { Button } from '@/components/ui/button' import Input from '@/components/Input' import { Edit2 } from 'lucide-react' import Layout from '@/hoc/Layout' import { Heart, ShoppingCart } from 'iconsax-react' import Menu from './components/Menu' import { useGetProfile, useUpdateProfile } from './hooks/useProfileData' // Schema validation const profileSchema = yup.object({ fullName: yup.string().required('نام و نام خانوادگی الزامی است'), phoneNumber: yup .string() .required('شماره تماس الزامی است') .matches(/^09\d{9}$/, 'شماره تماس باید با 09 شروع شود و 11 رقم باشد'), dateOfBirth: yup.string().required('تاریخ تولد الزامی است'), nationalCode: yup .string() .required('کد ملی الزامی است') .matches(/^\d{10}$/, 'کد ملی باید 10 رقم باشد'), address: yup.string().required('آدرس الزامی است'), }) const ProfilePage = () => { const { data: profile, isLoading } = useGetProfile() const updateProfileMutation = useUpdateProfile() const [isEditing, setIsEditing] = useState(false) const { register, handleSubmit, formState: { errors, isSubmitting }, reset, setValue, } = useForm({ resolver: yupResolver(profileSchema), mode: 'onChange', defaultValues: { fullName: '', phoneNumber: '', dateOfBirth: '', nationalCode: '', address: '', }, }) // Set form values when profile data is loaded useEffect(() => { if (profile?.results?.info) { const userInfo = profile.results.info setValue('fullName', userInfo.fullName || '') setValue('phoneNumber', userInfo.phoneNumber || '') setValue('dateOfBirth', userInfo.dateOfBirth || '') setValue('nationalCode', userInfo.nationalCode || '') setValue('address', userInfo.userAddress?.address || '') } }, [profile, setValue]) const onSubmit = async (data: Record) => { await updateProfileMutation.mutateAsync(data) setIsEditing(false) } const handleFormSubmit = (e: React.FormEvent) => { e.preventDefault() handleSubmit(onSubmit)(e) } const handleCancel = () => { reset() setIsEditing(false) } if (isLoading) { return (
در حال بارگذاری...
) } return (

اطلاعات کاربری

{isEditing && (
)}
سفارشات
علاقه مندی ها
{/* محتوای اضافی */}
) } export default function ProfilePageWithLayout() { return ( ) }