From 278fd5bd59bdcefe7b51d285643d3e77eac78109 Mon Sep 17 00:00:00 2001
From: ajbura <ajbura@gmail.com>
Date: Sun, 13 Feb 2022 13:32:57 +0530
Subject: [PATCH] Fix member load triggering re-renders (#261)

Signed-off-by: ajbura <ajbura@gmail.com>
---
 src/app/molecules/room-members/RoomMembers.jsx | 4 ++++
 src/app/organisms/room/PeopleDrawer.jsx        | 7 ++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/app/molecules/room-members/RoomMembers.jsx b/src/app/molecules/room-members/RoomMembers.jsx
index a1ffd21c..ac004f46 100644
--- a/src/app/molecules/room-members/RoomMembers.jsx
+++ b/src/app/molecules/room-members/RoomMembers.jsx
@@ -58,8 +58,10 @@ function useMemberOfMembership(roomId, membership) {
 
   useEffect(() => {
     let isMounted = true;
+    let isLoadingMembers = false;
 
     const updateMemberList = (event) => {
+      if (isLoadingMembers) return;
       if (event && event?.getRoomId() !== roomId) return;
       const memberOfMembership = normalizeMembers(
         room.getMembersWithMembership(membership)
@@ -69,7 +71,9 @@ function useMemberOfMembership(roomId, membership) {
     };
 
     updateMemberList();
+    isLoadingMembers = true;
     room.loadMembersIfNeeded().then(() => {
+      isLoadingMembers = false;
       if (!isMounted) return;
       updateMemberList();
     });
diff --git a/src/app/organisms/room/PeopleDrawer.jsx b/src/app/organisms/room/PeopleDrawer.jsx
index 026173d4..ee966146 100644
--- a/src/app/organisms/room/PeopleDrawer.jsx
+++ b/src/app/organisms/room/PeopleDrawer.jsx
@@ -103,10 +103,10 @@ function PeopleDrawer({ roomId }) {
   }, [memberList]);
 
   useEffect(() => {
-    let isGettingMembers = true;
+    let isLoadingMembers = false;
     let isRoomChanged = false;
     const updateMemberList = (event) => {
-      if (isGettingMembers) return;
+      if (isLoadingMembers) return;
       if (event && event?.getRoomId() !== roomId) return;
       setMemberList(
         simplyfiMembers(
@@ -117,8 +117,9 @@ function PeopleDrawer({ roomId }) {
     };
     searchRef.current.value = '';
     updateMemberList();
+    isLoadingMembers = true;
     room.loadMembersIfNeeded().then(() => {
-      isGettingMembers = false;
+      isLoadingMembers = false;
       if (isRoomChanged) return;
       updateMemberList();
     });