Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 35d4ec6

Browse files
authored
Fix Manage Restricted Join Rule Dialog for Spaces (#7208)
1 parent 9fefeef commit 35d4ec6

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

src/components/views/dialogs/ManageRestrictedJoinRuleDialog.tsx

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,28 @@ const Entry = ({ room, checked, onChange }) => {
6666
</label>;
6767
};
6868

69+
const addAllParents = (set: Set<Room>, room: Room): void => {
70+
const cli = room.client;
71+
const parents = Array.from(SpaceStore.instance.getKnownParents(room.roomId)).map(parentId => cli.getRoom(parentId));
72+
73+
parents.forEach(parent => {
74+
if (set.has(parent)) return;
75+
set.add(parent);
76+
addAllParents(set, parent);
77+
});
78+
};
79+
6980
const ManageRestrictedJoinRuleDialog: React.FC<IProps> = ({ room, selected = [], onFinished }) => {
7081
const cli = room.client;
7182
const [newSelected, setNewSelected] = useState(new Set<string>(selected));
7283
const [query, setQuery] = useState("");
7384
const lcQuery = query.toLowerCase().trim();
7485

7586
const [spacesContainingRoom, otherEntries] = useMemo(() => {
76-
const spaces = cli.getVisibleRooms().filter(r => r.getMyMembership() === "join" && r.isSpaceRoom());
87+
const parents = new Set<Room>();
88+
addAllParents(parents, room);
7789
return [
78-
spaces.filter(r => SpaceStore.instance.getSpaceFilteredRoomIds(r.roomId).has(room.roomId)),
90+
Array.from(parents),
7991
selected.map(roomId => {
8092
const room = cli.getRoom(roomId);
8193
if (!room) {
@@ -86,9 +98,9 @@ const ManageRestrictedJoinRuleDialog: React.FC<IProps> = ({ room, selected = [],
8698
}
8799
}).filter(Boolean),
88100
];
89-
}, [cli, selected, room.roomId]);
101+
}, [cli, selected, room]);
90102

91-
const [filteredSpacesContainingRooms, filteredOtherEntries] = useMemo(() => [
103+
const [filteredSpacesContainingRoom, filteredOtherEntries] = useMemo(() => [
92104
spacesContainingRoom.filter(r => r.name.toLowerCase().includes(lcQuery)),
93105
otherEntries.filter(r => r.name.toLowerCase().includes(lcQuery)),
94106
], [spacesContainingRoom, otherEntries, lcQuery]);
@@ -129,10 +141,14 @@ const ManageRestrictedJoinRuleDialog: React.FC<IProps> = ({ room, selected = [],
129141
autoFocus={true}
130142
/>
131143
<AutoHideScrollbar className="mx_ManageRestrictedJoinRuleDialog_content">
132-
{ filteredSpacesContainingRooms.length > 0 ? (
144+
{ filteredSpacesContainingRoom.length > 0 ? (
133145
<div className="mx_ManageRestrictedJoinRuleDialog_section">
134-
<h3>{ _t("Spaces you know that contain this room") }</h3>
135-
{ filteredSpacesContainingRooms.map(space => {
146+
<h3>
147+
{ room.isSpaceRoom()
148+
? _t("Spaces you know that contain this space")
149+
: _t("Spaces you know that contain this room") }
150+
</h3>
151+
{ filteredSpacesContainingRoom.map(space => {
136152
return <Entry
137153
key={space.roomId}
138154
room={space}
@@ -164,7 +180,7 @@ const ManageRestrictedJoinRuleDialog: React.FC<IProps> = ({ room, selected = [],
164180
</div>
165181
) : null }
166182

167-
{ filteredSpacesContainingRooms.length + filteredOtherEntries.length < 1
183+
{ filteredSpacesContainingRoom.length + filteredOtherEntries.length < 1
168184
? <span className="mx_ManageRestrictedJoinRuleDialog_noResults">
169185
{ _t("No results") }
170186
</span>

src/i18n/strings/en_EN.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2570,6 +2570,7 @@
25702570
"Select spaces": "Select spaces",
25712571
"Decide which spaces can access this room. If a space is selected, its members can find and join <RoomName/>.": "Decide which spaces can access this room. If a space is selected, its members can find and join <RoomName/>.",
25722572
"Search spaces": "Search spaces",
2573+
"Spaces you know that contain this space": "Spaces you know that contain this space",
25732574
"Spaces you know that contain this room": "Spaces you know that contain this room",
25742575
"Other spaces or rooms you might not know": "Other spaces or rooms you might not know",
25752576
"These are likely ones other room admins are a part of.": "These are likely ones other room admins are a part of.",

0 commit comments

Comments
 (0)