Merge pull request #2169 from famedly/krille/fix-set-join-rule

fix: Set join rules with knowk_restricted and multiple allow condition room ids
This commit is contained in:
Krille-chan 2025-10-30 08:36:22 +01:00 committed by GitHub
commit 96f1f056e9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 17 additions and 5 deletions

View File

@ -2437,18 +2437,30 @@ class Room {
JoinRules joinRules, { JoinRules joinRules, {
/// For restricted rooms, the id of the room where a user needs to be member. /// For restricted rooms, the id of the room where a user needs to be member.
/// Learn more at https://spec.matrix.org/latest/client-server-api/#restricted-rooms /// Learn more at https://spec.matrix.org/latest/client-server-api/#restricted-rooms
List<String>? allowConditionRoomIds,
@Deprecated('Use allowConditionRoomIds instead!')
String? allowConditionRoomId, String? allowConditionRoomId,
}) async { }) async {
if (allowConditionRoomId != null) {
allowConditionRoomIds ??= [];
allowConditionRoomIds.add(allowConditionRoomId);
}
await client.setRoomStateWithKey( await client.setRoomStateWithKey(
id, id,
EventTypes.RoomJoinRules, EventTypes.RoomJoinRules,
'', '',
{ {
'join_rule': joinRules.toString().replaceAll('JoinRules.', ''), 'join_rule': joinRules.text,
if (allowConditionRoomId != null) if (allowConditionRoomIds != null && allowConditionRoomIds.isNotEmpty)
'allow': [ 'allow': allowConditionRoomIds
{'room_id': allowConditionRoomId, 'type': 'm.room_membership'}, .map(
], (allowConditionRoomId) => {
'room_id': allowConditionRoomId,
'type': 'm.room_membership',
},
)
.toList(),
}, },
); );
return; return;