Adopt room info power levels (#4245)

* Use the newly RoomInfo published PowerLevels; update permissions at the same time as the room info and avoid unnecessary async calls.

* Introduce a RoomInfoProxyProtocol and associated mock and move away from mocked SDK RoomInfos

* Bump the SDK to v25.06.23

* Expose new non-throwing methods for checking one's own user permissions

* Fix the unit and preview tests (except the TimelineMediaPreviewDetails for which simplified snapshots were generated)

* Converge on one single implementation for computing a room's avatar.

* Fix more unit tests

* Fix the TimelineMediaPreviewDetailsView snapshot tests

This reverts commit 9b6c819e611ad2fa3de2c34a4a7aa556fc9faadd.

---------

Co-authored-by: Doug <douglase@element.io>
This commit is contained in:
Stefan Ceriu
2025-06-24 19:48:00 +03:00
committed by GitHub
parent 0f9d700c99
commit 5ac6ec28d5
31 changed files with 1274 additions and 362 deletions
@@ -18,6 +18,46 @@ struct RoomPowerLevelsProxy: RoomPowerLevelsProxyProtocol {
powerLevels.values()
}
func canOwnUser(sendMessage messageType: MessageLikeEventType) -> Bool {
powerLevels.canOwnUserSendMessage(message: messageType)
}
func canOwnUser(sendStateEvent stateEventType: StateEventType) -> Bool {
powerLevels.canOwnUserSendState(stateEvent: stateEventType)
}
func canOwnUserInvite() -> Bool {
powerLevels.canOwnUserInvite()
}
func canOwnUserRedactOther() -> Bool {
powerLevels.canOwnUserRedactOther()
}
func canOwnUserRedactOwn() -> Bool {
powerLevels.canOwnUserRedactOwn()
}
func canOwnUserKick() -> Bool {
powerLevels.canOwnUserKick()
}
func canOwnUserBan() -> Bool {
powerLevels.canOwnUserBan()
}
func canOwnUserTriggerRoomNotification() -> Bool {
powerLevels.canOwnUserTriggerRoomNotification()
}
func canOwnUserPinOrUnpin() -> Bool {
powerLevels.canOwnUserPinUnpin()
}
func canOwnUserJoinCall() -> Bool {
powerLevels.canOwnUserSendState(stateEvent: .callMember)
}
func canUser(userID: String, sendMessage messageType: MessageLikeEventType) -> Result<Bool, RoomProxyError> {
do {
return try .success(powerLevels.canUserSendMessage(userId: userID, message: messageType))