From 944acf99dbd6a03dfca6d48d51aca91c36a44435 Mon Sep 17 00:00:00 2001 From: shancds Date: Fri, 25 Jul 2025 12:07:43 +0530 Subject: [PATCH] feat(project-member-drawer): filter out already invited members from the selection list - Implemented logic to filter available members by excluding those already part of the current project. - Updated the member selection dropdown to display only non-invited members, enhancing the user experience during the invitation process. --- .../project-member-invite-drawer.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx b/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx index 00c01d93..01f423e8 100644 --- a/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx +++ b/worklenz-frontend/src/components/projects/project-member-invite-drawer/project-member-invite-drawer.tsx @@ -33,6 +33,12 @@ const ProjectMemberDrawer = () => { const [members, setMembers] = useState({ data: [], total: 0 }); const [teamMembersLoading, setTeamMembersLoading] = useState(false); + // Filter out members already in the project + const currentProjectMemberIds = (currentMembersList || []).map(m => m.team_member_id).filter(Boolean); + const availableMembers = (members?.data || []).filter( + member => member.id && !currentProjectMemberIds.includes(member.id) + ); + const fetchProjectMembers = async () => { if (!projectId) return; dispatch(getAllProjectMembers(projectId)); @@ -226,7 +232,7 @@ const ProjectMemberDrawer = () => { onSearch={handleSearch} onChange={handleSelectChange} onKeyDown={handleKeyDown} - options={members?.data?.map(member => ({ + options={availableMembers.map(member => ({ key: member.id, value: member.id, name: member.name,