From 5553d23db1322166c28d2a35a277c7627841b349 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 23 Jun 2025 11:48:58 +0000 Subject: [PATCH 1/2] fix(deps): update dependency org.matrix.rustcomponents:sdk-android to v25.6.23 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8e1f5d4721..515f787e6e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -172,7 +172,7 @@ jsoup = "org.jsoup:jsoup:1.20.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.1.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.6.18" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.6.23" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } From 1947c77ab48182d5dcfdf9d648e35c55ccc96d21 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 23 Jun 2025 14:24:38 +0200 Subject: [PATCH 2/2] Fix API break. --- .../impl/analytics/AnalyticUtils.kt | 4 +-- .../RolesAndPermissionsPresenter.kt | 2 +- .../ChangeRoomPermissionsPresenter.kt | 6 ++-- .../permissions/ChangeRoomPermissionsState.kt | 4 +-- .../ChangeRoomPermissionsStateProvider.kt | 8 +++--- .../permissions/ChangeRoomPermissionsView.kt | 6 ++-- .../RolesAndPermissionPresenterTest.kt | 3 +- .../ChangeBaseRoomPermissionsPresenterTest.kt | 17 ++--------- .../libraries/matrix/api/room/BaseRoom.kt | 4 +-- .../libraries/matrix/api/room/JoinedRoom.kt | 6 ++-- ...owerLevels.kt => RoomPowerLevelsValues.kt} | 2 +- .../matrix/impl/room/JoinedRustRoom.kt | 25 ++++++++--------- .../matrix/impl/room/RustBaseRoom.kt | 28 ++++++++++--------- .../room/powerlevels/RoomPowerLevelsMapper.kt | 26 ----------------- .../RoomPowerLevelsValuesMapper.kt | 26 +++++++++++++++++ .../fixtures/factories/RoomPowerLevels.kt | 6 ++-- ....kt => RoomPowerLevelsValuesMapperTest.kt} | 14 +++++----- .../matrix/test/room/FakeBaseRoom.kt | 8 +++--- .../matrix/test/room/FakeJoinedRoom.kt | 12 ++++---- 19 files changed, 98 insertions(+), 109 deletions(-) rename libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/{RoomPowerLevels.kt => RoomPowerLevelsValues.kt} (98%) delete mode 100644 libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapper.kt create mode 100644 libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapper.kt rename libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/{RoomPowerLevelsMapperTest.kt => RoomPowerLevelsValuesMapperTest.kt} (80%) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt index 48c13b80a6..7e4ae1d7c2 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/analytics/AnalyticUtils.kt @@ -9,7 +9,7 @@ package io.element.android.features.roomdetails.impl.analytics import im.vector.app.features.analytics.plan.RoomModeration import io.element.android.libraries.matrix.api.room.RoomMember -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.services.analytics.api.AnalyticsService internal fun RoomMember.Role.toAnalyticsMemberRole(): RoomModeration.Role = when (this) { @@ -22,7 +22,7 @@ internal fun analyticsMemberRoleForPowerLevel(powerLevel: Long): RoomModeration. return RoomMember.Role.forPowerLevel(powerLevel).toAnalyticsMemberRole() } -internal fun AnalyticsService.trackPermissionChangeAnalytics(initial: RoomPowerLevels?, updated: RoomPowerLevels) { +internal fun AnalyticsService.trackPermissionChangeAnalytics(initial: RoomPowerLevelsValues?, updated: RoomPowerLevelsValues) { if (updated.ban != initial?.ban) { capture(RoomModeration(RoomModeration.Action.ChangePermissionsBanMembers, analyticsMemberRoleForPowerLevel(updated.ban))) } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt index 2f2f14a157..812a9d4e1a 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionsPresenter.kt @@ -105,7 +105,7 @@ class RolesAndPermissionsPresenter @Inject constructor( ) = launch(dispatchers.io) { runUpdatingState(resetPermissionsAction) { analyticsService.capture(RoomModeration(RoomModeration.Action.ResetPermissions)) - room.resetPowerLevels().map {} + room.resetPowerLevels() } } diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt index 905a71a623..8b6f7efc96 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsPresenter.kt @@ -22,7 +22,7 @@ import io.element.android.features.roomdetails.impl.analytics.trackPermissionCha import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.architecture.Presenter import io.element.android.libraries.matrix.api.room.JoinedRoom -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.services.analytics.api.AnalyticsService import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf @@ -59,8 +59,8 @@ class ChangeRoomPermissionsPresenter @AssistedInject constructor( private val items: ImmutableList = itemsForSection(section) - private var initialPermissions by mutableStateOf(null) - private var currentPermissions by mutableStateOf(null) + private var initialPermissions by mutableStateOf(null) + private var currentPermissions by mutableStateOf(null) private var saveAction by mutableStateOf>(AsyncAction.Uninitialized) private var confirmExitAction by mutableStateOf>(AsyncAction.Uninitialized) diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt index 6248df0885..5e7b77560a 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsState.kt @@ -8,12 +8,12 @@ package io.element.android.features.roomdetails.impl.rolesandpermissions.permissions import io.element.android.libraries.architecture.AsyncAction -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import kotlinx.collections.immutable.ImmutableList data class ChangeRoomPermissionsState( val section: ChangeRoomPermissionsSection, - val currentPermissions: RoomPowerLevels?, + val currentPermissions: RoomPowerLevelsValues?, val items: ImmutableList, val hasChanges: Boolean, val saveAction: AsyncAction, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt index c068b69716..4210d117c7 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsStateProvider.kt @@ -10,7 +10,7 @@ package io.element.android.features.roomdetails.impl.rolesandpermissions.permiss import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import kotlinx.collections.immutable.toPersistentList class ChangeRoomPermissionsStateProvider : PreviewParameterProvider { @@ -36,7 +36,7 @@ class ChangeRoomPermissionsStateProvider : PreviewParameterProvider = ChangeRoomPermissionsPresenter.itemsForSection(section), hasChanges: Boolean = false, saveAction: AsyncAction = AsyncAction.Uninitialized, @@ -52,8 +52,8 @@ internal fun aChangeRoomPermissionsState( eventSink = eventSink, ) -private fun previewPermissions(): RoomPowerLevels { - return RoomPowerLevels( +private fun previewPermissions(): RoomPowerLevelsValues { + return RoomPowerLevelsValues( // MembershipModeration section invite = RoomMember.Role.ADMIN.powerLevel, kick = RoomMember.Role.MODERATOR.powerLevel, diff --git a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt index 527eca483f..d8eb707927 100644 --- a/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt +++ b/features/roomdetails/impl/src/main/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeRoomPermissionsView.kt @@ -36,7 +36,7 @@ import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton import io.element.android.libraries.designsystem.theme.components.TopAppBar import io.element.android.libraries.matrix.api.room.RoomMember -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.ui.strings.CommonStrings @OptIn(ExperimentalMaterial3Api::class) @@ -133,7 +133,7 @@ fun ChangeRoomPermissionsView( private fun SelectRoleItem( permissionsItem: RoomPermissionType, role: RoomMember.Role, - currentPermissions: RoomPowerLevels?, + currentPermissions: RoomPowerLevelsValues?, onClick: (RoomPermissionType, RoomMember.Role) -> Unit ) { val title = when (role) { @@ -153,7 +153,7 @@ private fun SelectRoleItem( ) } -private fun RoomPowerLevels.isSelected(item: RoomPermissionType, role: RoomMember.Role): Boolean { +private fun RoomPowerLevelsValues.isSelected(item: RoomPermissionType, role: RoomMember.Role): Boolean { return when (item) { RoomPermissionType.BAN -> RoomMember.Role.forPowerLevel(ban) == role RoomPermissionType.INVITE -> RoomMember.Role.forPowerLevel(invite) == role diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt index 9ecbbe69c5..718c618484 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/RolesAndPermissionPresenterTest.kt @@ -16,7 +16,6 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.test.room.FakeJoinedRoom -import io.element.android.libraries.matrix.test.room.defaultRoomPowerLevels import io.element.android.services.analytics.test.FakeAnalyticsService import io.element.android.tests.testutils.testCoroutineDispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -121,7 +120,7 @@ class RolesAndPermissionPresenterTest { val presenter = createRolesAndPermissionsPresenter( analyticsService = analyticsService, room = FakeJoinedRoom( - resetPowerLevelsResult = { Result.success(defaultRoomPowerLevels()) } + resetPowerLevelsResult = { Result.success(Unit) } ) ) moleculeFlow(RecompositionMode.Immediate) { diff --git a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt index 8021d09c8d..cf764a39fb 100644 --- a/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt +++ b/features/roomdetails/impl/src/test/kotlin/io/element/android/features/roomdetails/impl/rolesandpermissions/permissions/ChangeBaseRoomPermissionsPresenterTest.kt @@ -18,7 +18,7 @@ import io.element.android.libraries.architecture.AsyncAction import io.element.android.libraries.matrix.api.room.RoomMember.Role.ADMIN import io.element.android.libraries.matrix.api.room.RoomMember.Role.MODERATOR import io.element.android.libraries.matrix.api.room.RoomMember.Role.USER -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.test.room.FakeBaseRoom import io.element.android.libraries.matrix.test.room.FakeJoinedRoom import io.element.android.libraries.matrix.test.room.defaultRoomPowerLevels @@ -133,7 +133,7 @@ class ChangeBaseRoomPermissionsPresenterTest { (items.last() as? Event.Item)?.value?.run { assertThat(currentPermissions).isEqualTo( - RoomPowerLevels( + RoomPowerLevelsValues( invite = MODERATOR.powerLevel, kick = MODERATOR.powerLevel, ban = MODERATOR.powerLevel, @@ -296,18 +296,7 @@ class ChangeBaseRoomPermissionsPresenterTest { analyticsService = analyticsService, ) - private fun defaultPermissions() = defaultRoomPowerLevels().run { - RoomPowerLevels( - invite = invite, - kick = kick, - ban = ban, - redactEvents = redactEvents, - sendEvents = sendEvents, - roomName = roomName, - roomAvatar = roomAvatar, - roomTopic = roomTopic, - ) - } + private fun defaultPermissions() = defaultRoomPowerLevels() private suspend fun TurbineTestContext.awaitUpdatedItem(): ChangeRoomPermissionsState { skipItems(1) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt index f6152cf0c6..7e902a66fa 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/BaseRoom.kt @@ -13,7 +13,7 @@ import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.matrix.api.core.ThreadId import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.room.draft.ComposerDraft -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.api.room.tombstone.PredecessorRoom import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.timeline.ReceiptType @@ -89,7 +89,7 @@ interface BaseRoom : Closeable { /** * Gets the power levels of the room. */ - suspend fun powerLevels(): Result + suspend fun powerLevels(): Result /** * Gets the role of the user with the provided [userId] in the room. diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt index 4528c75b1d..e6d17e27a5 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/JoinedRoom.kt @@ -16,7 +16,7 @@ import io.element.android.libraries.matrix.api.encryption.identity.IdentityState import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.room.knock.KnockRequest -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.api.room.powerlevels.UserRoleChange import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.timeline.Timeline @@ -118,9 +118,9 @@ interface JoinedRoom : BaseRoom { suspend fun updateUsersRoles(changes: List): Result - suspend fun updatePowerLevels(roomPowerLevels: RoomPowerLevels): Result + suspend fun updatePowerLevels(roomPowerLevelsValues: RoomPowerLevelsValues): Result - suspend fun resetPowerLevels(): Result + suspend fun resetPowerLevels(): Result suspend fun setName(name: String): Result diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/RoomPowerLevels.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/RoomPowerLevelsValues.kt similarity index 98% rename from libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/RoomPowerLevels.kt rename to libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/RoomPowerLevelsValues.kt index 8f548cc601..0acafc2a43 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/RoomPowerLevels.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/room/powerlevels/RoomPowerLevelsValues.kt @@ -12,7 +12,7 @@ import io.element.android.libraries.matrix.api.room.BaseRoom import io.element.android.libraries.matrix.api.room.MessageEventType import io.element.android.libraries.matrix.api.room.StateEventType -data class RoomPowerLevels( +data class RoomPowerLevelsValues( val ban: Long, val invite: Long, val kick: Long, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt index 34ff4042cc..153dc92274 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/JoinedRustRoom.kt @@ -27,7 +27,7 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationSettingsStat import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.room.knock.KnockRequest -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.api.room.powerlevels.UserRoleChange import io.element.android.libraries.matrix.api.room.roomNotificationSettings import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility @@ -40,7 +40,6 @@ import io.element.android.libraries.matrix.impl.room.history.map import io.element.android.libraries.matrix.impl.room.join.map import io.element.android.libraries.matrix.impl.room.knock.RustKnockRequest import io.element.android.libraries.matrix.impl.room.member.RoomMemberListFetcher -import io.element.android.libraries.matrix.impl.room.powerlevels.RoomPowerLevelsMapper import io.element.android.libraries.matrix.impl.roomdirectory.map import io.element.android.libraries.matrix.impl.timeline.RustTimeline import io.element.android.libraries.matrix.impl.util.MessageEventContent @@ -364,25 +363,25 @@ class JoinedRustRoom( } } - override suspend fun updatePowerLevels(roomPowerLevels: RoomPowerLevels): Result = withContext(roomDispatcher) { + override suspend fun updatePowerLevels(roomPowerLevelsValues: RoomPowerLevelsValues): Result = withContext(roomDispatcher) { runCatchingExceptions { val changes = RoomPowerLevelChanges( - ban = roomPowerLevels.ban, - invite = roomPowerLevels.invite, - kick = roomPowerLevels.kick, - redact = roomPowerLevels.redactEvents, - eventsDefault = roomPowerLevels.sendEvents, - roomName = roomPowerLevels.roomName, - roomAvatar = roomPowerLevels.roomAvatar, - roomTopic = roomPowerLevels.roomTopic, + ban = roomPowerLevelsValues.ban, + invite = roomPowerLevelsValues.invite, + kick = roomPowerLevelsValues.kick, + redact = roomPowerLevelsValues.redactEvents, + eventsDefault = roomPowerLevelsValues.sendEvents, + roomName = roomPowerLevelsValues.roomName, + roomAvatar = roomPowerLevelsValues.roomAvatar, + roomTopic = roomPowerLevelsValues.roomTopic, ) innerRoom.applyPowerLevelChanges(changes) } } - override suspend fun resetPowerLevels(): Result = withContext(roomDispatcher) { + override suspend fun resetPowerLevels(): Result = withContext(roomDispatcher) { runCatchingExceptions { - RoomPowerLevelsMapper.map(innerRoom.resetPowerLevels()) + innerRoom.resetPowerLevels().let {} } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt index b6ff98baed..734531a7cc 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustBaseRoom.kt @@ -24,14 +24,14 @@ import io.element.android.libraries.matrix.api.room.RoomMembersState import io.element.android.libraries.matrix.api.room.RoomMembershipObserver import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.api.room.draft.ComposerDraft -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.api.room.tombstone.PredecessorRoom import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.timeline.ReceiptType import io.element.android.libraries.matrix.impl.room.draft.into import io.element.android.libraries.matrix.impl.room.member.RoomMemberListFetcher import io.element.android.libraries.matrix.impl.room.member.RoomMemberMapper -import io.element.android.libraries.matrix.impl.room.powerlevels.RoomPowerLevelsMapper +import io.element.android.libraries.matrix.impl.room.powerlevels.RoomPowerLevelsValuesMapper import io.element.android.libraries.matrix.impl.room.tombstone.map import io.element.android.libraries.matrix.impl.roomdirectory.map import io.element.android.libraries.matrix.impl.timeline.toRustReceiptType @@ -132,9 +132,11 @@ class RustBaseRoom( } } - override suspend fun powerLevels(): Result = withContext(roomDispatcher) { + override suspend fun powerLevels(): Result = withContext(roomDispatcher) { runCatchingExceptions { - RoomPowerLevelsMapper.map(innerRoom.getPowerLevels()) + innerRoom.getPowerLevels().use { + RoomPowerLevelsValuesMapper.map(it.values()) + } } } @@ -167,55 +169,55 @@ class RustBaseRoom( override suspend fun canUserInvite(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserInvite(userId.value) + innerRoom.getPowerLevels().use { it.canUserInvite(userId.value) } } } override suspend fun canUserKick(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserKick(userId.value) + innerRoom.getPowerLevels().use { it.canUserKick(userId.value) } } } override suspend fun canUserBan(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserBan(userId.value) + innerRoom.getPowerLevels().use { it.canUserBan(userId.value) } } } override suspend fun canUserRedactOwn(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserRedactOwn(userId.value) + innerRoom.getPowerLevels().use { it.canUserRedactOwn(userId.value) } } } override suspend fun canUserRedactOther(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserRedactOther(userId.value) + innerRoom.getPowerLevels().use { it.canUserRedactOther(userId.value) } } } override suspend fun canUserSendState(userId: UserId, type: StateEventType): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserSendState(userId.value, type.map()) + innerRoom.getPowerLevels().use { it.canUserSendState(userId.value, type.map()) } } } override suspend fun canUserSendMessage(userId: UserId, type: MessageEventType): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserSendMessage(userId.value, type.map()) + innerRoom.getPowerLevels().use { it.canUserSendMessage(userId.value, type.map()) } } } override suspend fun canUserTriggerRoomNotification(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserTriggerRoomNotification(userId.value) + innerRoom.getPowerLevels().use { it.canUserTriggerRoomNotification(userId.value) } } } override suspend fun canUserPinUnpin(userId: UserId): Result = withContext(roomDispatcher) { runCatchingExceptions { - innerRoom.canUserPinUnpin(userId.value) + innerRoom.getPowerLevels().use { it.canUserPinUnpin(userId.value) } } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapper.kt deleted file mode 100644 index 55a09030b3..0000000000 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapper.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package io.element.android.libraries.matrix.impl.room.powerlevels - -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels -import org.matrix.rustcomponents.sdk.RoomPowerLevels as RustRoomPowerLevels - -object RoomPowerLevelsMapper { - fun map(roomPowerLevels: RustRoomPowerLevels): RoomPowerLevels { - return RoomPowerLevels( - ban = roomPowerLevels.ban, - invite = roomPowerLevels.invite, - kick = roomPowerLevels.kick, - sendEvents = roomPowerLevels.eventsDefault, - redactEvents = roomPowerLevels.redact, - roomName = roomPowerLevels.roomName, - roomAvatar = roomPowerLevels.roomAvatar, - roomTopic = roomPowerLevels.roomTopic - ) - } -} diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapper.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapper.kt new file mode 100644 index 0000000000..840a5da428 --- /dev/null +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapper.kt @@ -0,0 +1,26 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.libraries.matrix.impl.room.powerlevels + +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues +import org.matrix.rustcomponents.sdk.RoomPowerLevelsValues as RustRoomPowerLevelsValues + +object RoomPowerLevelsValuesMapper { + fun map(values: RustRoomPowerLevelsValues): RoomPowerLevelsValues { + return RoomPowerLevelsValues( + ban = values.ban, + invite = values.invite, + kick = values.kick, + sendEvents = values.eventsDefault, + redactEvents = values.redact, + roomName = values.roomName, + roomAvatar = values.roomAvatar, + roomTopic = values.roomTopic, + ) + } +} diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomPowerLevels.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomPowerLevels.kt index e7967a49d8..79d1606957 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomPowerLevels.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/factories/RoomPowerLevels.kt @@ -7,9 +7,9 @@ package io.element.android.libraries.matrix.impl.fixtures.factories -import org.matrix.rustcomponents.sdk.RoomPowerLevels +import org.matrix.rustcomponents.sdk.RoomPowerLevelsValues -internal fun aRustRoomPowerLevels( +internal fun aRustRoomPowerLevelsValues( ban: Long, invite: Long, kick: Long, @@ -20,7 +20,7 @@ internal fun aRustRoomPowerLevels( roomName: Long, roomAvatar: Long, roomTopic: Long, -) = RoomPowerLevels( +) = RoomPowerLevelsValues( ban = ban, invite = invite, kick = kick, diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapperTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapperTest.kt similarity index 80% rename from libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapperTest.kt rename to libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapperTest.kt index aac02350e1..a2c6fca7a1 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsMapperTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/room/powerlevels/RoomPowerLevelsValuesMapperTest.kt @@ -8,16 +8,16 @@ package io.element.android.libraries.matrix.impl.room.powerlevels import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels -import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues +import io.element.android.libraries.matrix.impl.fixtures.factories.aRustRoomPowerLevelsValues import org.junit.Test -class RoomPowerLevelsMapperTest { +class RoomPowerLevelsValuesMapperTest { @Test - fun `test that mapping of RoomPowerLevels is correct`() { + fun `test that mapping of RoomPowerLevelsValues is correct`() { assertThat( - RoomPowerLevelsMapper.map( - aRustRoomPowerLevels( + RoomPowerLevelsValuesMapper.map( + aRustRoomPowerLevelsValues( ban = 1, invite = 2, kick = 3, @@ -31,7 +31,7 @@ class RoomPowerLevelsMapperTest { ) ) ).isEqualTo( - RoomPowerLevels( + RoomPowerLevelsValues( ban = 1, invite = 2, kick = 3, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt index c620f5c886..c74635d1f9 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeBaseRoom.kt @@ -20,7 +20,7 @@ import io.element.android.libraries.matrix.api.room.RoomMember import io.element.android.libraries.matrix.api.room.RoomMembersState import io.element.android.libraries.matrix.api.room.StateEventType import io.element.android.libraries.matrix.api.room.draft.ComposerDraft -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.api.room.tombstone.PredecessorRoom import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.timeline.ReceiptType @@ -57,7 +57,7 @@ class FakeBaseRoom( private val canUserPinUnpinResult: (UserId) -> Result = { lambdaError() }, private val setIsFavoriteResult: (Boolean) -> Result = { lambdaError() }, private val markAsReadResult: (ReceiptType) -> Result = { Result.success(Unit) }, - private val powerLevelsResult: () -> Result = { lambdaError() }, + private val powerLevelsResult: () -> Result = { lambdaError() }, private val leaveRoomLambda: () -> Result = { lambdaError() }, private val updateMembersResult: () -> Unit = { lambdaError() }, private val getMembersResult: (Int) -> Result> = { lambdaError() }, @@ -93,7 +93,7 @@ class FakeBaseRoom( subscribeToSyncLambda() } - override suspend fun powerLevels(): Result { + override suspend fun powerLevels(): Result { return powerLevelsResult() } @@ -225,7 +225,7 @@ class FakeBaseRoom( override fun predecessorRoom(): PredecessorRoom? = predecessorRoomResult() } -fun defaultRoomPowerLevels() = RoomPowerLevels( +fun defaultRoomPowerLevels() = RoomPowerLevelsValues( ban = 50, invite = 0, kick = 50, diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt index ff7a1ddc26..c98c886129 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/room/FakeJoinedRoom.kt @@ -25,7 +25,7 @@ import io.element.android.libraries.matrix.api.room.RoomNotificationSettingsStat import io.element.android.libraries.matrix.api.room.history.RoomHistoryVisibility import io.element.android.libraries.matrix.api.room.join.JoinRule import io.element.android.libraries.matrix.api.room.knock.KnockRequest -import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevels +import io.element.android.libraries.matrix.api.room.powerlevels.RoomPowerLevelsValues import io.element.android.libraries.matrix.api.room.powerlevels.UserRoleChange import io.element.android.libraries.matrix.api.roomdirectory.RoomVisibility import io.element.android.libraries.matrix.api.timeline.Timeline @@ -66,8 +66,8 @@ class FakeJoinedRoom( private val updateAvatarResult: (String, ByteArray) -> Result = { _, _ -> lambdaError() }, private val removeAvatarResult: () -> Result = { lambdaError() }, private val updateUserRoleResult: (List) -> Result = { lambdaError() }, - private val updatePowerLevelsResult: (RoomPowerLevels) -> Result = { lambdaError() }, - private val resetPowerLevelsResult: () -> Result = { lambdaError() }, + private val updatePowerLevelsResult: (RoomPowerLevelsValues) -> Result = { lambdaError() }, + private val resetPowerLevelsResult: () -> Result = { lambdaError() }, private val reportContentResult: (EventId, String, UserId?) -> Result = { _, _, _ -> lambdaError() }, private val kickUserResult: (UserId, String?) -> Result = { _, _ -> lambdaError() }, private val banUserResult: (UserId, String?) -> Result = { _, _ -> lambdaError() }, @@ -162,11 +162,11 @@ class FakeJoinedRoom( updateUserRoleResult(changes) } - override suspend fun updatePowerLevels(roomPowerLevels: RoomPowerLevels): Result = simulateLongTask { - updatePowerLevelsResult(roomPowerLevels) + override suspend fun updatePowerLevels(roomPowerLevelsValues: RoomPowerLevelsValues): Result = simulateLongTask { + updatePowerLevelsResult(roomPowerLevelsValues) } - override suspend fun resetPowerLevels(): Result = simulateLongTask { + override suspend fun resetPowerLevels(): Result = simulateLongTask { resetPowerLevelsResult() }