import React, { useEffect, useState } from "react"; import { useFeatures } from "../../hooks/useMasterRole"; import { useForm } from 'react-hook-form'; import { set, z } from 'zod'; import { zodResolver } from '@hookform/resolvers/zod'; import { MasterRespository } from "../../repositories/MastersRepository"; import { cacheData, getCachedData } from "../../slices/apiDataManager"; import showToast from "../../services/toastService"; const schema = z.object({ role: z.string().min(1, { message: "Role is required" }), description: z.string().min(1, { message: "Description is required" }) .max(255, { message: "Description cannot exceed 255 characters" }), selectedPermissions: z .array(z.string()) .min(1, { message: "Please select at least one permission" }), }); const CreateRole = ({modalType,onClose}) => { const[isLoading,setIsLoading] = useState(false) const {masterFeatures} = useFeatures() const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(schema), defaultValues: { role: "", description: "", selectedPermissions: [], }, }); const onSubmit = (values) => { setIsLoading(true) const result = { role: values.role, description: values.description, featuresPermission: values.selectedPermissions.map((id) => ({ id, isEnabled: true, })), }; MasterRespository.createRole(result).then((resp)=>{ setIsLoading(false) const cachedData = getCachedData( "Application Role" ); const updatedData = [...cachedData, resp.data]; cacheData("Application Role", updatedData); showToast( "Application Role Added successfully.", "success" ); onClose() } ).catch( ( err ) => { showToast(err?.response?.data?.message, "error"); setIsLoading( false ) onClose() }) }; const [descriptionLength, setDescriptionLength] = useState(0); const maxDescriptionLength = 255; useEffect(() => { setDescriptionLength(0); }, []); return (
); }; export default CreateRole;