From 9320b531b6709b2355e53f9e4993be20ecbfa2e0 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Fri, 26 Jul 2024 22:48:25 +0300 Subject: [PATCH 1/3] fix duplicate members in room members page --- src/pages/RoomMembersPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/RoomMembersPage.tsx b/src/pages/RoomMembersPage.tsx index 514e1f462e6b..19753691f60e 100644 --- a/src/pages/RoomMembersPage.tsx +++ b/src/pages/RoomMembersPage.tsx @@ -174,7 +174,7 @@ function RoomMembersPage({report, session, policies}: RoomMembersPageProps) { participants.forEach((accountID) => { const details = personalDetails[accountID]; - if (!details) { + if (!details || (details.isOptimisticPersonalDetail && participants.some((accID) => accID !== accountID && details.login === personalDetails[accID]?.login))) { Log.hmmm(`[RoomMembersPage] no personal details found for room member with accountID: ${accountID}`); return; } From 1d02a664fcdd899629aab8e5d27da11a1475d0bb Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Mon, 29 Jul 2024 16:13:34 +0300 Subject: [PATCH 2/3] Added Comment --- src/pages/RoomMembersPage.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pages/RoomMembersPage.tsx b/src/pages/RoomMembersPage.tsx index 19753691f60e..2c1b5b6e3f2c 100644 --- a/src/pages/RoomMembersPage.tsx +++ b/src/pages/RoomMembersPage.tsx @@ -173,8 +173,12 @@ function RoomMembersPage({report, session, policies}: RoomMembersPageProps) { participants.forEach((accountID) => { const details = personalDetails[accountID]; + // When adding a new member to a room (whose personal detail doesn't exist in onyx), optimistc personal detail + // is created but after the real personal detail is return from BE until the optimistic personal detail + // is deleted a duplicate member is appearing for a second, so we filter out the optimistically created member here. + const isDuplicateOptimisticDetail = details?.isOptimisticPersonalDetail && participants.some((accID) => accID !== accountID && details.login === personalDetails[accID]?.login); - if (!details || (details.isOptimisticPersonalDetail && participants.some((accID) => accID !== accountID && details.login === personalDetails[accID]?.login))) { + if (!details || isDuplicateOptimisticDetail) { Log.hmmm(`[RoomMembersPage] no personal details found for room member with accountID: ${accountID}`); return; } From a44195d4a7eae8f7216deb40ca2af8a39da8d5d7 Mon Sep 17 00:00:00 2001 From: FitseTLT Date: Mon, 29 Jul 2024 17:48:06 +0300 Subject: [PATCH 3/3] edited comment --- src/pages/RoomMembersPage.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pages/RoomMembersPage.tsx b/src/pages/RoomMembersPage.tsx index 2c1b5b6e3f2c..ce9bae168684 100644 --- a/src/pages/RoomMembersPage.tsx +++ b/src/pages/RoomMembersPage.tsx @@ -173,9 +173,10 @@ function RoomMembersPage({report, session, policies}: RoomMembersPageProps) { participants.forEach((accountID) => { const details = personalDetails[accountID]; - // When adding a new member to a room (whose personal detail doesn't exist in onyx), optimistc personal detail - // is created but after the real personal detail is return from BE until the optimistic personal detail - // is deleted a duplicate member is appearing for a second, so we filter out the optimistically created member here. + // When adding a new member to a room (whose personal detail does not exist in Onyx), an optimistic personal detail + // is created. However, when the real personal detail is returned from the backend, a duplicate member may appear + // briefly before the optimistic personal detail is deleted. To address this, we filter out the optimistically created + // member here. const isDuplicateOptimisticDetail = details?.isOptimisticPersonalDetail && participants.some((accID) => accID !== accountID && details.login === personalDetails[accID]?.login); if (!details || isDuplicateOptimisticDetail) {