From 56ff11d63f1d33c5fc050f23630687292dc24ea3 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Mon, 16 Sep 2024 14:17:14 +0800 Subject: [PATCH] fix: address group view issue encountered during approval creation --- .../src/services/group-project/group-project-dal.ts | 2 +- .../project-membership/project-membership-service.ts | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/src/services/group-project/group-project-dal.ts b/backend/src/services/group-project/group-project-dal.ts index c74a6b1b2..ca22d3f78 100644 --- a/backend/src/services/group-project/group-project-dal.ts +++ b/backend/src/services/group-project/group-project-dal.ts @@ -152,7 +152,7 @@ export const groupProjectDALFactory = (db: TDbClient) => { `${TableName.ProjectRoles}.id` ) .select( - db.ref("id").withSchema(TableName.GroupProjectMembership), + db.ref("id").withSchema(TableName.UserGroupMembership), db.ref("isGhost").withSchema(TableName.Users), db.ref("username").withSchema(TableName.Users), db.ref("email").withSchema(TableName.Users), diff --git a/backend/src/services/project-membership/project-membership-service.ts b/backend/src/services/project-membership/project-membership-service.ts index e2ed4647d..1086a36ea 100644 --- a/backend/src/services/project-membership/project-membership-service.ts +++ b/backend/src/services/project-membership/project-membership-service.ts @@ -90,15 +90,20 @@ export const projectMembershipServiceFactory = ({ // projectMembers[0].project if (includeGroupMembers) { const groupMembers = await groupProjectDAL.findAllProjectGroupMembers(projectId); - const allMembers = [ ...projectMembers.map((m) => ({ ...m, isGroupMember: false })), ...groupMembers.map((m) => ({ ...m, isGroupMember: true })) ]; // Ensure the userId is unique - const membersIds = new Set(allMembers.map((entity) => entity.user.id)); - const uniqueMembers = allMembers.filter((entity) => membersIds.has(entity.user.id)); + const uniqueMembers: typeof allMembers = []; + const addedUserIds = new Set(); + allMembers.forEach((member) => { + if (!addedUserIds.has(member.user.id)) { + uniqueMembers.push(member); + addedUserIds.add(member.user.id); + } + }); return uniqueMembers; }