Add categorize spaces function in RoomList
authorAjay Bura <ajbura@gmail.com>
Wed, 2 Mar 2022 15:27:29 +0000 (20:57 +0530)
committerAjay Bura <ajbura@gmail.com>
Wed, 2 Mar 2022 15:27:29 +0000 (20:57 +0530)
Signed-off-by: Ajay Bura <ajbura@gmail.com>
src/client/state/RoomList.js

index 263c454fac4418825b112bfcfcb32b13599ad407..bd3815529e3f665d82b4b69701984242545d562d 100644 (file)
@@ -52,6 +52,28 @@ class RoomList extends EventEmitter {
     return children?.filter((childId) => childId !== null);
   }
 
+  getCategorizedSpaces(spaceIds) {
+    const categorized = new Map();
+
+    const categorizeSpace = (spaceId) => {
+      if (categorized.has(spaceId)) return;
+      const mappedChild = new Set();
+      categorized.set(spaceId, mappedChild);
+
+      const child = this.getSpaceChildren(spaceId);
+
+      child.forEach((childId) => {
+        const room = this.matrixClient.getRoom(childId);
+        if (room === null) return;
+        if (room.isSpaceRoom()) categorizeSpace(childId);
+        else mappedChild.add(childId);
+      });
+    };
+    spaceIds.map(categorizeSpace);
+
+    return categorized;
+  }
+
   addToRoomIdToParents(roomId, parentRoomId) {
     if (!this.roomIdToParents.has(roomId)) {
       this.roomIdToParents.set(roomId, new Set());