Skip to content

Commit b8ef841

Browse files
UserList -> getUserRooms script fixed. / MutualServers key issue fixed.
1 parent 01b925e commit b8ef841

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

src/app/organisms/profile-viewer/tabs/MutualServers.jsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ function MutualServerRender({ userId, requestClose }) {
3434
{userData.spaces.length > 0 ? (
3535
<>
3636
<div className="small text-gray ms-2 mb-1">Spaces</div>
37-
<ul class="mutual-servers m-0 p-0">
37+
<ul className="mutual-servers m-0 p-0">
3838
{userData.spaces.map((roomId) => {
3939
const room = mx.getRoom(roomId);
4040

4141
return (
42-
<li class="list-group-item">
42+
<li key={`mutual_servers_space_${roomId}`} className="list-group-item">
4343
<RoomSelector
4444
key={`mutual_servers_${roomId}`}
4545
name={room.name}
@@ -63,12 +63,12 @@ function MutualServerRender({ userId, requestClose }) {
6363
<>
6464
{userData.spaces.length > 0 ? <hr className="mx-0 my-2 border-bg" /> : null}
6565
<div className="small text-gray ms-2 mb-1">Rooms</div>
66-
<ul class="mutual-servers m-0 p-0">
66+
<ul className="mutual-servers m-0 p-0">
6767
{userData.rooms.map((roomId) => {
6868
const room = mx.getRoom(roomId);
6969

7070
return (
71-
<li class="list-group-item">
71+
<li key={`mutual_servers_room_${roomId}`} className="list-group-item">
7272
<RoomSelector
7373
key={`mutual_servers_${roomId}`}
7474
name={room.name}

src/client/state/UserList.js

+19-11
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class UserList extends EventEmitter {
1010
this.users = new Map();
1111
this.rooms = new Map();
1212

13-
this._populateRooms();
13+
this.populateRooms();
1414
this._listenEvents();
1515
}
1616

@@ -27,20 +27,28 @@ class UserList extends EventEmitter {
2727
if (rooms) {
2828
let using = false;
2929
const result = { spaces: [], rooms: [] };
30+
const checked = [];
3031
const { roomList } = initMatrix;
3132

32-
rooms.forEach((roomId) => {
33-
if (roomList.isOrphan(roomId)) {
34-
if (roomList.spaces.has(roomId)) {
35-
using = true;
36-
result.spaces.push(roomId);
37-
} else if (!roomList.directs.has(roomId)) {
38-
using = true;
39-
result.rooms.push(roomId);
33+
const insertRoom = (roomId) => {
34+
if (checked.indexOf(roomId) < 0) {
35+
checked.push(roomId);
36+
if (roomList.isOrphan(roomId)) {
37+
if (roomList.spaces.has(roomId)) {
38+
using = true;
39+
result.spaces.push(roomId);
40+
} else if (!roomList.directs.has(roomId)) {
41+
using = true;
42+
result.rooms.push(roomId);
43+
}
44+
} else {
45+
const moreRooms = roomList.roomIdToParents.get(roomId);
46+
if (moreRooms) moreRooms.forEach((roomId2) => insertRoom(roomId2));
4047
}
4148
}
42-
});
49+
};
4350

51+
rooms.forEach((roomId) => insertRoom(roomId));
4452
if (using) return result;
4553
}
4654
return null;
@@ -118,7 +126,7 @@ class UserList extends EventEmitter {
118126
});
119127
}
120128

121-
_populateRooms() {
129+
populateRooms() {
122130
const tinyThis = this;
123131
this.matrixClient.getRooms().forEach((room) => {
124132
tinyThis.populateRoom(room);

0 commit comments

Comments
 (0)