Update dependency org.matrix.rustcomponents:sdk-android to v26.1.27 (#6096)

* Update dependency org.matrix.rustcomponents:sdk-android to v26.1.27

* Fix breaking API changes: `LeaveSpaceRoom.isLastAdmin` is now `LeaveSpaceRoom.isLastOwner`.

* Rename `isLastAdmin` to `isLastOwner` in our codebase too.

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
This commit is contained in:
renovate[bot]
2026-01-27 15:02:55 +00:00
committed by GitHub
parent 8a05f525fa
commit 692302df5c
10 changed files with 51 additions and 51 deletions

View File

@@ -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,

View File

@@ -15,7 +15,7 @@ import kotlinx.collections.immutable.toImmutableList
data class LeaveSpaceState(
val spaceName: String?,
val isLastAdmin: Boolean,
val isLastOwner: Boolean,
val selectableSpaceRooms: AsyncData<ImmutableList<SelectableSpaceRoom>>,
val leaveSpaceAction: AsyncAction<Unit>,
val eventSink: (LeaveSpaceEvents) -> Unit,
@@ -25,7 +25,7 @@ data class LeaveSpaceState(
private val selectableRooms: ImmutableList<SelectableSpaceRoom>
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.

View File

@@ -34,7 +34,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
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<LeaveSpaceState> {
spaceRoom = aSpaceRoom(
worldReadable = true,
),
isLastAdmin = true,
isLastOwner = true,
),
aSelectableSpaceRoom(
spaceRoom = aSpaceRoom(
@@ -70,7 +70,7 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
spaceRoom = aSpaceRoom(
worldReadable = true,
),
isLastAdmin = true,
isLastOwner = true,
),
)
),
@@ -82,11 +82,11 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
spaceRoom = aSpaceRoom(
worldReadable = true,
),
isLastAdmin = true,
isLastOwner = true,
),
aSelectableSpaceRoom(
spaceRoom = aSpaceRoom(),
isLastAdmin = true,
isLastOwner = true,
),
)
),
@@ -107,19 +107,19 @@ class LeaveSpaceStateProvider : PreviewParameterProvider<LeaveSpaceState> {
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<ImmutableList<SelectableSpaceRoom>> = AsyncData.Uninitialized,
leaveSpaceAction: AsyncAction<Unit> = 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,
)

View File

@@ -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(),
)
}
}

View File

@@ -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,
)

View File

@@ -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,
)

View File

@@ -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()
)
)

View File

@@ -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" }

View File

@@ -10,5 +10,5 @@ package io.element.android.libraries.matrix.api.spaces
data class LeaveSpaceRoom(
val spaceRoom: SpaceRoom,
val isLastAdmin: Boolean,
val isLastOwner: Boolean,
)

View File

@@ -40,7 +40,7 @@ class RustLeaveSpaceHandle(
inner.await().rooms().map { leaveSpaceRoom ->
LeaveSpaceRoom(
spaceRoom = spaceRoomMapper.map(leaveSpaceRoom.spaceRoom),
isLastAdmin = leaveSpaceRoom.isLastAdmin,
isLastOwner = leaveSpaceRoom.isLastOwner,
)
}
}