Make the room power levels optional as they can be missing depending on what state events are requested

This commit is contained in:
Stefan Ceriu
2025-06-25 12:35:04 +03:00
committed by Stefan Ceriu
parent c7ff6c019d
commit de723853e3
16 changed files with 65 additions and 45 deletions
@@ -224,13 +224,17 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
state.isKnockableRoom = false
}
state.canEditRoomName = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomName)
state.canEditRoomTopic = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomTopic)
state.canEditRoomAvatar = roomInfo.powerLevels.canOwnUser(sendStateEvent: .roomAvatar)
state.canInviteUsers = roomInfo.powerLevels.canOwnUserInvite()
state.canKickUsers = roomInfo.powerLevels.canOwnUserKick()
state.canBanUsers = roomInfo.powerLevels.canOwnUserBan()
state.canJoinCall = roomInfo.powerLevels.canOwnUserJoinCall()
if let powerLevels = roomInfo.powerLevels {
state.canEditRoomName = powerLevels.canOwnUser(sendStateEvent: .roomName)
state.canEditRoomTopic = powerLevels.canOwnUser(sendStateEvent: .roomTopic)
state.canEditRoomAvatar = powerLevels.canOwnUser(sendStateEvent: .roomAvatar)
state.canInviteUsers = powerLevels.canOwnUserInvite()
state.canKickUsers = powerLevels.canOwnUserKick()
state.canBanUsers = powerLevels.canOwnUserBan()
state.canJoinCall = powerLevels.canOwnUserJoinCall()
} else {
fatalError("Missing room power levels")
}
Task {
state.canEditRolesOrPermissions = await (try? roomProxy.suggestedRole(for: roomProxy.ownUserID).get()) == .administrator