List group rooms and public group rooms properly

This commit is contained in:
Robert Long
2021-10-01 16:17:47 -07:00
parent 16e12fab8a
commit 44446b8d47
4 changed files with 69 additions and 7 deletions

View File

@@ -277,24 +277,45 @@ function sortRooms(client, rooms) {
});
}
export function useRooms(client) {
export function useGroupCallRooms(client) {
const [rooms, setRooms] = useState([]);
useEffect(() => {
function updateRooms() {
const visibleRooms = client.getVisibleRooms();
const sortedRooms = sortRooms(client, visibleRooms);
const groupCalls = client.groupCallEventHandler.groupCalls.values();
const rooms = Array.from(groupCalls).map((groupCall) => groupCall.room);
const sortedRooms = sortRooms(client, rooms);
setRooms(sortedRooms);
}
updateRooms();
client.on("Room", updateRooms);
client.on("GroupCall.incoming", updateRooms);
return () => {
client.removeListener("Room", updateRooms);
client.removeListener("GroupCall.incoming", updateRooms);
};
}, []);
return rooms;
}
export function usePublicRooms(client, publicSpaceRoomId, maxRooms = 50) {
const [rooms, setRooms] = useState([]);
useEffect(() => {
if (publicSpaceRoomId) {
client.getRoomHierarchy(publicSpaceRoomId, maxRooms).then(({ rooms }) => {
const filteredRooms = rooms.filter(
(room) => room.room_type !== "m.space"
);
setRooms(filteredRooms);
});
} else {
setRooms([]);
}
}, [publicSpaceRoomId]);
return rooms;
}