From 95fbac4760bf7fb67ab3e113792130962b8a487e Mon Sep 17 00:00:00 2001 From: pramod mahajan Date: Wed, 17 Sep 2025 12:41:00 +0530 Subject: [PATCH] fixed prevent removed existen permission whenever add new one --- src/components/Project/ProjectPermission.jsx | 137 +++++++++++-------- 1 file changed, 80 insertions(+), 57 deletions(-) diff --git a/src/components/Project/ProjectPermission.jsx b/src/components/Project/ProjectPermission.jsx index 4a6a5504..b7d30adb 100644 --- a/src/components/Project/ProjectPermission.jsx +++ b/src/components/Project/ProjectPermission.jsx @@ -6,7 +6,7 @@ import { } from "../../hooks/useProjects"; import { useSelectedProject } from "../../slices/apiDataManager"; import { useEmployeesByProject } from "../../hooks/useEmployees"; -import { useForm } from "react-hook-form"; +import { useForm, Controller } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import showToast from "../../services/toastService"; @@ -27,6 +27,7 @@ const ProjectPermission = () => { watch, handleSubmit, reset, + control, formState: { errors, isDirty }, } = useForm({ resolver: zodResolver(ProjectPermissionSchema), @@ -73,15 +74,15 @@ const ProjectPermission = () => { const newSelectedIds = formData.selectedPermissions || []; - const removed = existingEnabledIds - .filter((id) => !newSelectedIds.includes(id)) - .map((id) => ({ id, isEnabled: false })); - const added = newSelectedIds .filter((id) => !existingEnabledIds.includes(id)) .map((id) => ({ id, isEnabled: true })); - const payloadPermissions = [...removed, ...added]; + const removed = existingEnabledIds + .filter((id) => !newSelectedIds.includes(id)) + .map((id) => ({ id, isEnabled: false })); + + const payloadPermissions = [...added, ...removed]; if (payloadPermissions.length === 0) { showToast("No changes detected", "info"); @@ -94,41 +95,45 @@ const ProjectPermission = () => { permission: payloadPermissions, }; + console.log("Final payload:", payload); updatePermission(payload); }; - const useOnClick = useCallback((event) => {}, []); return (
-
-
+ {loading ? ( + + ) : ( + <> + + {[...employees] + ?.sort((a, b) => + `${a?.firstName} ${a?.firstName}`?.localeCompare( + `${b?.firstName} ${b?.lastName}` + ) ) - ) - ?.map((emp) => ( - - ))} - - )} -
+ ?.map((emp) => ( + + ))} + + )} + +
{errors.employeeId && (
@@ -136,17 +141,16 @@ const ProjectPermission = () => {
)}
- {isDirty && ( -
- -
- )} + +
+ +
{ProjectModules.map((feature) => ( @@ -157,22 +161,41 @@ const ProjectPermission = () => {

{feature.name}

-
    +
      {feature.featurePermissions?.map((perm) => (
      - + { + const value = field.value || []; + const isChecked = value.includes(perm.id); + + return ( + + ); + }} + />
      ))}