diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt index a331aefccd..2d30bc8617 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenter.kt @@ -69,7 +69,7 @@ class LeaveSpacePresenter( // By default select all rooms that can be left val otherRoomsExcludingDm = otherRooms.filter { it.spaceRoom.isDirect != true } selectedRoomIds = otherRoomsExcludingDm - .filter { it.isLastAdmin.not() } + .filter { it.isLastOwner.not() } .map { it.spaceRoom.roomId } leaveSpaceRooms = rooms.fold( onSuccess = { @@ -91,7 +91,7 @@ class LeaveSpacePresenter( it.others.map { room -> SelectableSpaceRoom( spaceRoom = room.spaceRoom, - isLastAdmin = room.isLastAdmin, + isLastOwner = room.isLastOwner, isSelected = selectedRoomIds.contains(room.spaceRoom.roomId), ) }.toImmutableList() @@ -110,7 +110,7 @@ class LeaveSpacePresenter( LeaveSpaceEvents.SelectAllRooms -> { selectedRoomIds = selectableSpaceRooms.dataOrNull() .orEmpty() - .filter { it.isLastAdmin.not() } + .filter { it.isLastOwner.not() } .map { it.spaceRoom.roomId } } is LeaveSpaceEvents.ToggleRoomSelection -> { @@ -132,7 +132,7 @@ class LeaveSpacePresenter( return LeaveSpaceState( spaceName = leaveSpaceRooms.dataOrNull()?.current?.spaceRoom?.displayName, - isLastAdmin = leaveSpaceRooms.dataOrNull()?.current?.isLastAdmin == true, + isLastOwner = leaveSpaceRooms.dataOrNull()?.current?.isLastOwner == true, selectableSpaceRooms = selectableSpaceRooms, leaveSpaceAction = leaveSpaceAction.value, eventSink = ::handleEvent, diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt index 1e85014c84..2ff98ea583 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceState.kt @@ -15,7 +15,7 @@ import kotlinx.collections.immutable.toImmutableList data class LeaveSpaceState( val spaceName: String?, - val isLastAdmin: Boolean, + val isLastOwner: Boolean, val selectableSpaceRooms: AsyncData>, val leaveSpaceAction: AsyncAction, val eventSink: (LeaveSpaceEvents) -> Unit, @@ -25,7 +25,7 @@ data class LeaveSpaceState( private val selectableRooms: ImmutableList init { - val partition = rooms.partition { it.isLastAdmin } + val partition = rooms.partition { it.isLastOwner } lastAdminRooms = partition.first.toImmutableList() selectableRooms = partition.second.toImmutableList() } @@ -33,12 +33,12 @@ data class LeaveSpaceState( /** * True if we should show the quick action to select/deselect all rooms. */ - val showQuickAction = isLastAdmin.not() && selectableRooms.isNotEmpty() + val showQuickAction = isLastOwner.not() && selectableRooms.isNotEmpty() /** * True if we should show the leave button. */ - val showLeaveButton = isLastAdmin.not() && selectableSpaceRooms is AsyncData.Success + val showLeaveButton = isLastOwner.not() && selectableSpaceRooms is AsyncData.Success /** * True if there all the selectable rooms are selected. diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateProvider.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateProvider.kt index 46d3e53b2b..362e987fc4 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateProvider.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateProvider.kt @@ -34,7 +34,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider { displayName = "A long space name that should be truncated", worldReadable = true, ), - isLastAdmin = true, + isLastOwner = true, ), aSelectableSpaceRoom( spaceRoom = aSpaceRoom( @@ -52,7 +52,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider { spaceRoom = aSpaceRoom( worldReadable = true, ), - isLastAdmin = true, + isLastOwner = true, ), aSelectableSpaceRoom( spaceRoom = aSpaceRoom( @@ -70,7 +70,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider { spaceRoom = aSpaceRoom( worldReadable = true, ), - isLastAdmin = true, + isLastOwner = true, ), ) ), @@ -82,11 +82,11 @@ class LeaveSpaceStateProvider : PreviewParameterProvider { spaceRoom = aSpaceRoom( worldReadable = true, ), - isLastAdmin = true, + isLastOwner = true, ), aSelectableSpaceRoom( spaceRoom = aSpaceRoom(), - isLastAdmin = true, + isLastOwner = true, ), ) ), @@ -107,19 +107,19 @@ class LeaveSpaceStateProvider : PreviewParameterProvider { selectableSpaceRooms = AsyncData.Failure(Exception("An error")), ), aLeaveSpaceState( - isLastAdmin = true, + isLastOwner = true, ), ) } fun aLeaveSpaceState( spaceName: String? = "Space name", - isLastAdmin: Boolean = false, + isLastOwner: Boolean = false, selectableSpaceRooms: AsyncData> = AsyncData.Uninitialized, leaveSpaceAction: AsyncAction = AsyncAction.Uninitialized, ) = LeaveSpaceState( spaceName = spaceName, - isLastAdmin = isLastAdmin, + isLastOwner = isLastOwner, selectableSpaceRooms = selectableSpaceRooms, leaveSpaceAction = leaveSpaceAction, eventSink = { } @@ -127,10 +127,10 @@ fun aLeaveSpaceState( fun aSelectableSpaceRoom( spaceRoom: SpaceRoom = aSpaceRoom(), - isLastAdmin: Boolean = false, + isLastOwner: Boolean = false, isSelected: Boolean = false, ) = SelectableSpaceRoom( spaceRoom = spaceRoom, - isLastAdmin = isLastAdmin, + isLastOwner = isLastOwner, isSelected = isSelected, ) diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt index d405162b88..52d52a103e 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceView.kt @@ -94,7 +94,7 @@ fun LeaveSpaceView( modifier = Modifier .weight(1f), ) { - if (state.isLastAdmin.not()) { + if (state.isLastOwner.not()) { when (state.selectableSpaceRooms) { is AsyncData.Success -> { // List rooms where the user is the only admin @@ -132,7 +132,7 @@ fun LeaveSpaceView( state.eventSink(LeaveSpaceEvents.LeaveSpace) }, onCancel = onCancel, - showRolesAndPermissionsButton = state.isLastAdmin, + showRolesAndPermissionsButton = state.isLastOwner, onRolesAndPermissionsClick = onRolesAndPermissionsClick, ) } @@ -162,11 +162,11 @@ private fun LeaveSpaceHeader( modifier = Modifier.padding(top = 0.dp, bottom = 8.dp, start = 24.dp, end = 24.dp), iconStyle = BigIcon.Style.AlertSolid, title = stringResource( - if (state.isLastAdmin) R.string.screen_leave_space_title_last_admin else R.string.screen_leave_space_title, + if (state.isLastOwner) R.string.screen_leave_space_title_last_admin else R.string.screen_leave_space_title, state.spaceName ?: stringResource(CommonStrings.common_space) ), subTitle = - if (state.isLastAdmin) { + if (state.isLastOwner) { stringResource(R.string.screen_leave_space_subtitle_last_admin) } else if (state.selectableSpaceRooms is AsyncData.Success && state.selectableSpaceRooms.data.isNotEmpty()) { if (state.hasOnlyLastAdminRoom) { @@ -265,11 +265,11 @@ private fun SpaceItem( .toggleable( value = selectableSpaceRoom.isSelected, role = Role.Checkbox, - enabled = selectableSpaceRoom.isLastAdmin.not(), + enabled = selectableSpaceRoom.isLastOwner.not(), onValueChange = { onClick() } ) .clickable( - enabled = selectableSpaceRoom.isLastAdmin.not(), + enabled = selectableSpaceRoom.isLastOwner.not(), // TODO onClickLabel = null, role = Role.Checkbox, @@ -324,7 +324,7 @@ private fun SpaceItem( room.numJoinedMembers, room.numJoinedMembers ) - val subTitle = if (selectableSpaceRoom.isLastAdmin) { + val subTitle = if (selectableSpaceRoom.isLastOwner) { stringResource(R.string.screen_leave_space_last_admin_info, membersCount) } else { membersCount @@ -343,7 +343,7 @@ private fun SpaceItem( Checkbox( checked = selectableSpaceRoom.isSelected, onCheckedChange = null, - enabled = selectableSpaceRoom.isLastAdmin.not(), + enabled = selectableSpaceRoom.isLastOwner.not(), ) } } diff --git a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/SelectableSpaceRoom.kt b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/SelectableSpaceRoom.kt index d7ed243af6..a6c42e16dc 100644 --- a/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/SelectableSpaceRoom.kt +++ b/features/space/impl/src/main/kotlin/io/element/android/features/space/impl/leave/SelectableSpaceRoom.kt @@ -12,6 +12,6 @@ import io.element.android.libraries.matrix.api.spaces.SpaceRoom data class SelectableSpaceRoom( val spaceRoom: SpaceRoom, - val isLastAdmin: Boolean, + val isLastOwner: Boolean, val isSelected: Boolean, ) diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenterTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenterTest.kt index 495f0b38bd..e78a338bb7 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenterTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpacePresenterTest.kt @@ -44,7 +44,7 @@ class LeaveSpacePresenterTest { presenter.test { val state = awaitItem() assertThat(state.spaceName).isNull() - assertThat(state.isLastAdmin).isFalse() + assertThat(state.isLastOwner).isFalse() assertThat(state.selectableSpaceRooms.isLoading()).isTrue() assertThat(state.leaveSpaceAction).isEqualTo(AsyncAction.Uninitialized) cancelAndIgnoreRemainingEvents() @@ -78,7 +78,7 @@ class LeaveSpacePresenterTest { fun `present - current space name and is last admin`() = runTest { val presenter = createLeaveSpacePresenter( leaveSpaceHandle = FakeLeaveSpaceHandle( - roomsResult = { Result.success(listOf(aLeaveSpaceRoom(spaceRoom = aSpace, isLastAdmin = true))) }, + roomsResult = { Result.success(listOf(aLeaveSpaceRoom(spaceRoom = aSpace, isLastOwner = true))) }, ) ) presenter.test { @@ -87,7 +87,7 @@ class LeaveSpacePresenterTest { skipItems(2) val finalState = awaitItem() assertThat(finalState.spaceName).isEqualTo(A_SPACE_NAME) - assertThat(finalState.isLastAdmin).isTrue() + assertThat(finalState.isLastOwner).isTrue() // The current state is not in the sub room list assertThat(finalState.selectableSpaceRooms.dataOrNull()!!).isEmpty() } @@ -145,8 +145,8 @@ class LeaveSpacePresenterTest { roomsResult = { Result.success( listOf( - LeaveSpaceRoom(aSpaceRoom(roomId = A_ROOM_ID), isLastAdmin = false), - LeaveSpaceRoom(aSpaceRoom(roomId = A_ROOM_ID_2), isLastAdmin = true), + LeaveSpaceRoom(aSpaceRoom(roomId = A_ROOM_ID), isLastOwner = false), + LeaveSpaceRoom(aSpaceRoom(roomId = A_ROOM_ID_2), isLastOwner = true), ) ) }, @@ -157,18 +157,18 @@ class LeaveSpacePresenterTest { skipItems(3) val state = awaitItem() assertThat(state.spaceName).isNull() - assertThat(state.isLastAdmin).isFalse() + assertThat(state.isLastOwner).isFalse() val data = state.selectableSpaceRooms.dataOrNull()!! assertThat(data.size).isEqualTo(2) // Only one room is selectable as the user is the last admin in the other one val room1 = data[0] assertThat(room1.spaceRoom.roomId).isEqualTo(A_ROOM_ID) assertThat(room1.isSelected).isTrue() - assertThat(room1.isLastAdmin).isFalse() + assertThat(room1.isLastOwner).isFalse() val room2 = data[1] assertThat(room2.spaceRoom.roomId).isEqualTo(A_ROOM_ID_2) assertThat(room2.isSelected).isFalse() - assertThat(room2.isLastAdmin).isTrue() + assertThat(room2.isLastOwner).isTrue() // Deselect all state.eventSink(LeaveSpaceEvents.DeselectAllRooms) skipItems(1) @@ -246,8 +246,8 @@ private fun aLeaveSpaceRoom( roomId = A_SPACE_ID, displayName = A_SPACE_NAME, ), - isLastAdmin: Boolean = false, + isLastOwner: Boolean = false, ) = LeaveSpaceRoom( spaceRoom = spaceRoom, - isLastAdmin = isLastAdmin, + isLastOwner = isLastOwner, ) diff --git a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateTest.kt b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateTest.kt index d3b3f44398..83eee70e5c 100644 --- a/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateTest.kt +++ b/features/space/impl/src/test/kotlin/io/element/android/features/space/impl/leave/LeaveSpaceStateTest.kt @@ -44,10 +44,10 @@ class LeaveSpaceStateTest { @Test fun `test last admin`() { val sut = aLeaveSpaceState( - isLastAdmin = true, + isLastOwner = true, selectableSpaceRooms = AsyncData.Success( persistentListOf( - aSelectableSpaceRoom(isLastAdmin = false, isSelected = false), + aSelectableSpaceRoom(isLastOwner = false, isSelected = false), ) ) ) @@ -63,8 +63,8 @@ class LeaveSpaceStateTest { val sut = aLeaveSpaceState( selectableSpaceRooms = AsyncData.Success( listOf( - aSelectableSpaceRoom(isLastAdmin = false, isSelected = true), - aSelectableSpaceRoom(isLastAdmin = false, isSelected = false), + aSelectableSpaceRoom(isLastOwner = false, isSelected = true), + aSelectableSpaceRoom(isLastOwner = false, isSelected = false), ).toImmutableList() ) ) @@ -80,8 +80,8 @@ class LeaveSpaceStateTest { val sut = aLeaveSpaceState( selectableSpaceRooms = AsyncData.Success( listOf( - aSelectableSpaceRoom(isLastAdmin = false, isSelected = true), - aSelectableSpaceRoom(isLastAdmin = false, isSelected = true), + aSelectableSpaceRoom(isLastOwner = false, isSelected = true), + aSelectableSpaceRoom(isLastOwner = false, isSelected = true), ).toImmutableList() ) ) @@ -97,9 +97,9 @@ class LeaveSpaceStateTest { val sut = aLeaveSpaceState( selectableSpaceRooms = AsyncData.Success( persistentListOf( - aSelectableSpaceRoom(isLastAdmin = true, isSelected = false), - aSelectableSpaceRoom(isLastAdmin = false, isSelected = true), - aSelectableSpaceRoom(isLastAdmin = false, isSelected = true), + aSelectableSpaceRoom(isLastOwner = true, isSelected = false), + aSelectableSpaceRoom(isLastOwner = false, isSelected = true), + aSelectableSpaceRoom(isLastOwner = false, isSelected = true), ) ) ) @@ -115,8 +115,8 @@ class LeaveSpaceStateTest { val sut = aLeaveSpaceState( selectableSpaceRooms = AsyncData.Success( listOf( - aSelectableSpaceRoom(isLastAdmin = true, isSelected = false), - aSelectableSpaceRoom(isLastAdmin = true, isSelected = false), + aSelectableSpaceRoom(isLastOwner = true, isSelected = false), + aSelectableSpaceRoom(isLastOwner = true, isSelected = false), ).toImmutableList() ) ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e8da455954..8c2dfce3a0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -177,7 +177,7 @@ test_detekt_test = { module = "io.gitlab.arturbosch.detekt:detekt-test", version # https://github.com/matrix-org/matrix-rust-components-kotlin/commits/main/sdk/sdk-android/src/main/kotlin/org/matrix/rustcomponents/sdk/matrix_sdk_ffi.kt # All new features should not be implemented in the pull request that upgrades the version, developers should # only fix API breaks and may add some TODOs. -matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.1.22" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:26.1.27" # Others coil = { module = "io.coil-kt.coil3:coil", version.ref = "coil" } diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/LeaveSpaceRoom.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/LeaveSpaceRoom.kt index 071d5693b8..2b1389ea6e 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/LeaveSpaceRoom.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/spaces/LeaveSpaceRoom.kt @@ -10,5 +10,5 @@ package io.element.android.libraries.matrix.api.spaces data class LeaveSpaceRoom( val spaceRoom: SpaceRoom, - val isLastAdmin: Boolean, + val isLastOwner: Boolean, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustLeaveSpaceHandle.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustLeaveSpaceHandle.kt index 10e329e46f..16b5186c92 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustLeaveSpaceHandle.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/spaces/RustLeaveSpaceHandle.kt @@ -40,7 +40,7 @@ class RustLeaveSpaceHandle( inner.await().rooms().map { leaveSpaceRoom -> LeaveSpaceRoom( spaceRoom = spaceRoomMapper.map(leaveSpaceRoom.spaceRoom), - isLastAdmin = leaveSpaceRoom.isLastAdmin, + isLastOwner = leaveSpaceRoom.isLastOwner, ) } }