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
@@ -47,7 +47,8 @@ final class CompletionSuggestionService: CompletionSuggestionServiceProtocol {
self?.suggestionTriggerSubject.value != nil ? .milliseconds(500) : .milliseconds(0)
}
canMentionAllUsers = roomProxy.infoPublisher.value.powerLevels.canOwnUserTriggerRoomNotification()
guard let powerLevels = roomProxy.infoPublisher.value.powerLevels else { fatalError("Missing room power levels") }
canMentionAllUsers = powerLevels.canOwnUserTriggerRoomNotification()
}
func processTextMessage(_ textMessage: String, selectedRange: NSRange) {
@@ -348,11 +348,12 @@ class RoomScreenViewModel: RoomScreenViewModelType, RoomScreenViewModelProtocol
state.isKnockableRoom = false
}
state.canSendMessage = roomInfo.powerLevels.canOwnUser(sendMessage: .roomMessage)
state.canJoinCall = roomInfo.powerLevels.canOwnUserJoinCall()
state.canAcceptKnocks = roomInfo.powerLevels.canOwnUserInvite()
state.canDeclineKnocks = roomInfo.powerLevels.canOwnUserKick()
state.canBan = roomInfo.powerLevels.canOwnUserBan()
guard let powerLevels = roomInfo.powerLevels else { fatalError("Missing room power levels") }
state.canSendMessage = powerLevels.canOwnUser(sendMessage: .roomMessage)
state.canJoinCall = powerLevels.canOwnUserJoinCall()
state.canAcceptKnocks = powerLevels.canOwnUserInvite()
state.canDeclineKnocks = powerLevels.canOwnUserKick()
state.canBan = powerLevels.canOwnUserBan()
}
private func setupPinnedEventsTimelineItemProviderIfNeeded() {