import { type FC, useEffect } from 'react' import { useFormik } from 'formik' import * as Yup from 'yup' import { TickCircle } from 'iconsax-react' import { toast } from 'react-toastify' import { useNavigate, useParams } from 'react-router-dom' import Button from '@/components/Button' import Input from '@/components/Input' import { useUpdateRole, useGetRoleDetails } from './hooks/useRolesData' import type { CreateRoleType } from './types/Types' import { Pages } from '@/config/Pages' import type { ErrorType } from '@/helpers/types' import { extractErrorMessage } from '@/config/func' import PageLoading from '@/components/PageLoading' const UpdateRole: FC = () => { const { id } = useParams<{ id: string }>() const { data: roleData, isLoading } = useGetRoleDetails(id || '') const { mutate: updateRole, isPending } = useUpdateRole() const navigate = useNavigate() const role = roleData?.data const formik = useFormik({ initialValues: { name: '', permissionIds: [], }, validationSchema: Yup.object().shape({ name: Yup.string().required('نام نقش الزامی است'), permissionIds: Yup.array().of(Yup.string()), }), onSubmit: (values) => { if (!id) return updateRole( { id, params: values }, { onSuccess: () => { toast.success('نقش با موفقیت به‌روزرسانی شد') navigate(Pages.roles.list) }, onError: (error: ErrorType) => { toast.error(extractErrorMessage(error)) }, } ) }, }) useEffect(() => { if (role) { formik.setValues({ name: role.name || '', permissionIds: role.permissions?.map((p) => p.id) || [], }) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [role]) if (isLoading) { return } if (!role) { return (
نقش یافت نشد
) } return (
ویرایش نقش
) } export default UpdateRole