Fix member load triggering re-renders (#261)
authorajbura <ajbura@gmail.com>
Sun, 13 Feb 2022 08:02:57 +0000 (13:32 +0530)
committerajbura <ajbura@gmail.com>
Sun, 13 Feb 2022 08:02:57 +0000 (13:32 +0530)
Signed-off-by: ajbura <ajbura@gmail.com>
src/app/molecules/room-members/RoomMembers.jsx
src/app/organisms/room/PeopleDrawer.jsx

index a1ffd21c555e18ef32bed4a40eff068dc90edd38..ac004f469d8ce32621c5c03c8ddd9302ea9592c5 100644 (file)
@@ -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();
     });
index 026173d40c71c86ab634e138e602d5924e06ab73..ee96614685d0caeebc459463fa86055334e3987d 100644 (file)
@@ -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();
     });