Element Call permission tweaks (#2187)

* vector-im/element-meta/issues/2230 - Specify `call.member` default power levels when creating a room

* vector-im/element-meta/issues/2229 - Take into account permissions when configuring the room screen call button
This commit is contained in:
Stefan Ceriu
2023-12-06 13:14:23 +02:00
committed by GitHub
parent c7531be44c
commit 6cd25fac50
11 changed files with 78 additions and 9 deletions
@@ -50,6 +50,22 @@ class ClientProxy: ClientProxyProtocol {
let secureBackupController: SecureBackupControllerProtocol
private let roomListRecencyOrderingAllowedEventTypes = ["m.room.message", "m.room.encrypted", "m.sticker"]
private static var roomCreationPowerLevelOverrides: PowerLevels {
.init(usersDefault: nil,
eventsDefault: nil,
stateDefault: nil,
ban: nil,
kick: nil,
redact: nil,
invite: nil,
notifications: nil,
users: [:],
events: [
"m.call.member": Int32(0),
"org.matrix.msc3401.call.member": Int32(0)
])
}
private var loadCachedAvatarURLTask: Task<Void, Never>?
private let userAvatarURLSubject = CurrentValueSubject<URL?, Never>(nil)
@@ -208,7 +224,15 @@ class ClientProxy: ClientProxyProtocol {
func createDirectRoom(with userID: String, expectedRoomName: String?) async -> Result<String, ClientProxyError> {
let result: Result<String, ClientProxyError> = await Task.dispatch(on: clientQueue) {
do {
let parameters = CreateRoomParameters(name: nil, topic: nil, isEncrypted: true, isDirect: true, visibility: .private, preset: .trustedPrivateChat, invite: [userID], avatar: nil)
let parameters = CreateRoomParameters(name: nil,
topic: nil,
isEncrypted: true,
isDirect: true,
visibility: .private,
preset: .trustedPrivateChat,
invite: [userID],
avatar: nil,
powerLevelContentOverride: Self.roomCreationPowerLevelOverrides)
let result = try self.client.createRoom(request: parameters)
return .success(result)
} catch {
@@ -229,7 +253,8 @@ class ClientProxy: ClientProxyProtocol {
visibility: isRoomPrivate ? .private : .public,
preset: isRoomPrivate ? .privateChat : .publicChat,
invite: userIDs,
avatar: avatarURL?.absoluteString)
avatar: avatarURL?.absoluteString,
powerLevelContentOverride: Self.roomCreationPowerLevelOverrides)
let roomID = try self.client.createRoom(request: parameters)
return .success(roomID)
} catch {