Fix getAllParent including itself
authorAjay Bura <ajbura@gmail.com>
Mon, 14 Mar 2022 12:01:57 +0000 (17:31 +0530)
committerAjay Bura <ajbura@gmail.com>
Mon, 14 Mar 2022 12:01:57 +0000 (17:31 +0530)
Signed-off-by: Ajay Bura <ajbura@gmail.com>
src/client/state/Notifications.js
src/client/state/RoomList.js

index 1f7be3e5c418e2ff3fee04a3f1fc5008b74c1047..8ede1696320f9075a1e8b72c1442f09a059ede89 100644 (file)
@@ -117,7 +117,7 @@ class Notifications extends EventEmitter {
     if (addT < 0 || addH < 0) return;
 
     addNoti(roomId, addT, addH);
-    const allParentSpaces = this.roomList.getParentSpaces(roomId);
+    const allParentSpaces = this.roomList.getAllParentSpaces(roomId);
     allParentSpaces.forEach((spaceId) => {
       addNoti(spaceId, addT, addH, roomId);
     });
@@ -149,7 +149,7 @@ class Notifications extends EventEmitter {
     };
 
     removeNoti(roomId, total, highlight);
-    const allParentSpaces = this.roomList.getParentSpaces(roomId);
+    const allParentSpaces = this.roomList.getAllParentSpaces(roomId);
     allParentSpaces.forEach((spaceId) => {
       removeNoti(spaceId, total, highlight, roomId);
     });
index e200aac47f97e7e5d07e07fb367626ab7e934b97..ec3c060a16fabb73990157f139f3d54e075e5352 100644 (file)
@@ -91,21 +91,20 @@ class RoomList extends EventEmitter {
     if (parents.size === 0) this.roomIdToParents.delete(roomId);
   }
 
-  getParentSpaces(roomId) {
+  getAllParentSpaces(roomId) {
     const allParents = new Set();
-    const processed = new Set();
+
     const addAllParentIds = (rId) => {
-      if (processed.has(rId)) return;
-      processed.add(rId);
+      if (allParents.has(rId)) return;
+      allParents.add(rId);
 
       const parents = this.roomIdToParents.get(rId);
       if (parents === undefined) return;
 
-      parents.forEach((id) => allParents.add(id));
       parents.forEach((id) => addAllParentIds(id));
     };
     addAllParentIds(roomId);
-    processed.clear();
+    allParents.delete(roomId);
     return allParents;
   }