Use our own JoinRule type which doesn't include the reserved .private case. (#5056)

* Stop using Rust's JoinRule.private in mocks.

It isn't used anywhere else (see MSC4413 for more context).

* Use our own JoinRule (and AllowRule) types.

* Update ElementX/Sources/Services/Room/JoinRule.swift

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>

---------

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
This commit is contained in:
Doug
2026-02-06 13:54:53 +00:00
committed by GitHub
parent 61763d9893
commit bff328554a
18 changed files with 119 additions and 41 deletions
@@ -559,7 +559,7 @@ class ClientProxy: ClientProxyProtocol {
invite: userIDs,
avatar: avatarURL?.absoluteString,
powerLevelContentOverride: powerLevelContentOverride,
joinRuleOverride: accessType.joinRuleOverride,
joinRuleOverride: accessType.joinRuleOverride?.rustValue,
historyVisibilityOverride: accessType.historyVisibilityOverride,
// This is an FFI naming mistake, what is required is the `aliasLocalPart` not the whole alias
canonicalAlias: aliasLocalPart,
@@ -1432,9 +1432,9 @@ private extension CreateRoomAccessType {
case .askToJoin:
.knock
case .spaceMembers(let spaceID):
.restricted(rules: [.roomMembership(roomId: spaceID)])
.restricted(rules: [.roomMembership(roomID: spaceID)])
case .askToJoinWithSpaceMembers(let spaceID):
.knockRestricted(rules: [.roomMembership(roomId: spaceID)])
.knockRestricted(rules: [.roomMembership(roomID: spaceID)])
case .private, .public:
nil
}