diff --git a/src/components/Project/ProjectPermission.jsx b/src/components/Project/ProjectPermission.jsx index 471e283d..fa6bf1d2 100644 --- a/src/components/Project/ProjectPermission.jsx +++ b/src/components/Project/ProjectPermission.jsx @@ -28,6 +28,7 @@ const ProjectPermission = () => { handleSubmit, reset, control, + setValue, formState: { errors, isDirty }, } = useForm({ resolver: zodResolver(ProjectPermissionSchema), @@ -45,18 +46,26 @@ const ProjectPermission = () => { ); useEffect(() => { - if (!selectedEmployee) return; + if (!selectedEmployee) return; - const enabledPerms = - selectedEmpPermissions?.permissions - ?.filter((perm) => perm.isEnabled) - ?.map((perm) => perm.id) || []; + const enabledPerms = + selectedEmpPermissions?.permissions + ?.filter((perm) => perm.isEnabled) + ?.map((perm) => perm.id) || []; - reset((prev) => ({ - ...prev, - selectedPermissions: enabledPerms, - })); - }, [selectedEmpPermissions, reset, selectedEmployee]); + setValue("selectedPermissions", enabledPerms, { shouldValidate: true }); +}, [selectedEmpPermissions, setValue, selectedEmployee]); + +const selectedPermissions = watch("selectedPermissions") || []; + +const existingEnabledIds = + selectedEmpPermissions?.permissions + ?.filter((p) => p.isEnabled) + ?.map((p) => p.id) || []; + +const hasChanges = + selectedPermissions.length !== existingEnabledIds.length || + selectedPermissions.some((id) => !existingEnabledIds.includes(id)); const { mutate: updatePermission, isPending } = useUpdateProjectLevelEmployeePermission(); @@ -145,7 +154,7 @@ const ProjectPermission = () => {
- {isDirty && ( + {hasChanges && (