import { useFormik } from "formik"; import { type FC, useEffect } from "react"; import * as Yup from "yup"; import Button from "@/components/Button"; import { TickCircle } from "iconsax-react"; import Input from "@/components/Input"; import Textarea from "@/components/Textarea"; import SwitchComponent from "@/components/Switch"; import { useGetUserById, useUpdateUser, } from "./hooks/useUserData"; import { useNavigate, useParams } from "react-router-dom"; import { toast } from "react-toastify"; import { extractErrorMessage } from "@/config/func"; import { Paths } from "@/config/Paths"; import type { CreateUserType } from "./types/Types"; const initialValues: CreateUserType = { phone: "", firstName: "", lastName: "", address: "", gender: true, maxCredit: 0, }; const validationSchema = Yup.object({ phone: Yup.string() .required("شماره موبایل اجباری است"), firstName: Yup.string().required("نام اجباری است"), lastName: Yup.string().required("نام خانوادگی اجباری است"), address: Yup.string(), maxCredit: Yup.number().min(0, "اعتبار نمی‌تواند منفی باشد"), }); const UpdateUser: FC = () => { const navigate = useNavigate(); const { id: userId } = useParams<{ id: string }>(); const { data: userData, isLoading: isLoadingUser } = useGetUserById( userId ?? null, !!userId ); const { mutate: updateUser, isPending } = useUpdateUser(); const formik = useFormik({ initialValues, validationSchema, onSubmit: (values) => { if (!userId) return; updateUser( { userId, params: values }, { onSuccess: () => { toast.success("مشتری با موفقیت ویرایش شد"); navigate(Paths.users.list); }, onError: (error) => toast.error(extractErrorMessage(error)), } ); }, }); useEffect(() => { if (userData?.data) { const u = userData.data; formik.setValues({ phone: u.phone ?? "", firstName: u.firstName ?? "", lastName: u.lastName ?? "", address: u.addresse ?? "", gender: u.gender ?? true, maxCredit: u.maxCredit ?? 0, }); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [userData?.data]); if (isLoadingUser) { return (
در حال بارگذاری...
); } if (!userId || (!userData?.data && !isLoadingUser)) { return (
مشتری یافت نشد
); } return (

ویرایش مشتری