Update dependency org.matrix.rustcomponents:sdk-android to v0.2.6 (#2482)

* Update dependency org.matrix.rustcomponents:sdk-android to v0.2.6

* Update SDK changes

* Fix tests

---------

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] 2024-03-04 17:01:31 +00:00 committed by GitHub
parent dc5f93ef2f
commit 209e89469b
6 changed files with 52 additions and 84 deletions

View file

@ -153,7 +153,7 @@ jsoup = "org.jsoup:jsoup:1.17.2"
appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" }
molecule-runtime = "app.cash.molecule:molecule-runtime:1.4.0" molecule-runtime = "app.cash.molecule:molecule-runtime:1.4.0"
timber = "com.jakewharton.timber:timber:5.0.1" timber = "com.jakewharton.timber:timber:5.0.1"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.2.4" matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.2.6"
matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" }
matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", 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" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" }

View file

@ -45,7 +45,7 @@ class MatrixRoomInfoMapper(
alternativeAliases = it.alternativeAliases.toImmutableList(), alternativeAliases = it.alternativeAliases.toImmutableList(),
currentUserMembership = it.membership.map(), currentUserMembership = it.membership.map(),
latestEvent = it.latestEvent?.use(timelineItemMapper::map), latestEvent = it.latestEvent?.use(timelineItemMapper::map),
inviter = it.inviter?.use(RoomMemberMapper::map), inviter = it.inviter?.let(RoomMemberMapper::map),
activeMembersCount = it.activeMembersCount.toLong(), activeMembersCount = it.activeMembersCount.toLong(),
invitedMembersCount = it.invitedMembersCount.toLong(), invitedMembersCount = it.invitedMembersCount.toLong(),
joinedMembersCount = it.joinedMembersCount.toLong(), joinedMembersCount = it.joinedMembersCount.toLong(),

View file

@ -19,7 +19,6 @@ package io.element.android.libraries.matrix.impl.room.member
import io.element.android.libraries.core.coroutine.parallelMap import io.element.android.libraries.core.coroutine.parallelMap
import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState import io.element.android.libraries.matrix.api.room.MatrixRoomMembersState
import io.element.android.libraries.matrix.api.room.roomMembers import io.element.android.libraries.matrix.api.room.roomMembers
import io.element.android.libraries.matrix.impl.util.destroyAll
import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.ensureActive import kotlinx.coroutines.ensureActive
@ -109,13 +108,7 @@ internal class RoomMemberListFetcher(
// We should probably implement some sort of paging in the future. // We should probably implement some sort of paging in the future.
coroutineContext.ensureActive() coroutineContext.ensureActive()
val chunk = iterator.nextChunk(pageSize.toUInt()) val chunk = iterator.nextChunk(pageSize.toUInt())
val members = try { val members = chunk?.parallelMap(RoomMemberMapper::map) ?: break
// Load next chunk. If null (no more items), exit the loop
chunk?.parallelMap(RoomMemberMapper::map) ?: break
} finally {
// Make sure we clear all member references
chunk?.destroyAll()
}
addAll(members) addAll(members)
Timber.i("Emitting first $size members for room $roomId") Timber.i("Emitting first $size members for room $roomId")
_membersFlow.value = MatrixRoomMembersState.Ready(toImmutableList()) _membersFlow.value = MatrixRoomMembersState.Ready(toImmutableList())

View file

@ -24,19 +24,17 @@ import org.matrix.rustcomponents.sdk.MembershipState as RustMembershipState
import org.matrix.rustcomponents.sdk.RoomMember as RustRoomMember import org.matrix.rustcomponents.sdk.RoomMember as RustRoomMember
object RoomMemberMapper { object RoomMemberMapper {
fun map(roomMember: RustRoomMember): RoomMember = roomMember.use { fun map(roomMember: RustRoomMember): RoomMember = RoomMember(
RoomMember( UserId(roomMember.userId),
UserId(it.userId()), roomMember.displayName,
it.displayName(), roomMember.avatarUrl,
it.avatarUrl(), mapMembership(roomMember.membership),
mapMembership(it.membership()), roomMember.isNameAmbiguous,
it.isNameAmbiguous(), roomMember.powerLevel,
it.powerLevel(), roomMember.normalizedPowerLevel,
it.normalizedPowerLevel(), roomMember.isIgnored,
it.isIgnored(), mapRole(roomMember.suggestedRoleForPowerLevel),
mapRole(it.suggestedRoleForPowerLevel())
) )
}
fun mapRole(role: RoomMemberRole): RoomMember.Role = fun mapRole(role: RoomMemberRole): RoomMember.Role =
when (role) { when (role) {

View file

@ -38,6 +38,8 @@ class RustTracingService @Inject constructor(private val buildMeta: BuildMeta) :
is WriteToFilesConfiguration.Enabled -> TracingFileConfiguration( is WriteToFilesConfiguration.Enabled -> TracingFileConfiguration(
path = writeToFilesConfiguration.directory, path = writeToFilesConfiguration.directory,
filePrefix = writeToFilesConfiguration.filenamePrefix, filePrefix = writeToFilesConfiguration.filenamePrefix,
fileSuffix = null,
maxFiles = null,
) )
}, },
) )

View file

@ -42,9 +42,9 @@ class RoomMemberListFetcherTest {
val room = FakeRustRoom(getMembersNoSync = { val room = FakeRustRoom(getMembersNoSync = {
FakeRoomMembersIterator( FakeRoomMembersIterator(
listOf( listOf(
FakeRustRoomMember(A_USER_ID), fakeRustRoomMember(A_USER_ID),
FakeRustRoomMember(A_USER_ID_2), fakeRustRoomMember(A_USER_ID_2),
FakeRustRoomMember(A_USER_ID_3), fakeRustRoomMember(A_USER_ID_3),
) )
) )
}) })
@ -94,9 +94,9 @@ class RoomMemberListFetcherTest {
val room = FakeRustRoom(getMembersNoSync = { val room = FakeRustRoom(getMembersNoSync = {
FakeRoomMembersIterator( FakeRoomMembersIterator(
listOf( listOf(
FakeRustRoomMember(A_USER_ID), fakeRustRoomMember(A_USER_ID),
FakeRustRoomMember(A_USER_ID_2), fakeRustRoomMember(A_USER_ID_2),
FakeRustRoomMember(A_USER_ID_3), fakeRustRoomMember(A_USER_ID_3),
) )
) )
}) })
@ -118,9 +118,9 @@ class RoomMemberListFetcherTest {
val room = FakeRustRoom(getMembers = { val room = FakeRustRoom(getMembers = {
FakeRoomMembersIterator( FakeRoomMembersIterator(
listOf( listOf(
FakeRustRoomMember(A_USER_ID), fakeRustRoomMember(A_USER_ID),
FakeRustRoomMember(A_USER_ID_2), fakeRustRoomMember(A_USER_ID_2),
FakeRustRoomMember(A_USER_ID_3), fakeRustRoomMember(A_USER_ID_3),
) )
) )
}) })
@ -153,14 +153,14 @@ class RoomMemberListFetcherTest {
fun `fetchRoomMembers - with 'withCache' returns cached items first, then new ones`() = runTest { fun `fetchRoomMembers - with 'withCache' returns cached items first, then new ones`() = runTest {
val room = FakeRustRoom( val room = FakeRustRoom(
getMembersNoSync = { getMembersNoSync = {
FakeRoomMembersIterator(listOf(FakeRustRoomMember(A_USER_ID_4))) FakeRoomMembersIterator(listOf(fakeRustRoomMember(A_USER_ID_4)))
}, },
getMembers = { getMembers = {
FakeRoomMembersIterator( FakeRoomMembersIterator(
listOf( listOf(
FakeRustRoomMember(A_USER_ID), fakeRustRoomMember(A_USER_ID),
FakeRustRoomMember(A_USER_ID_2), fakeRustRoomMember(A_USER_ID_2),
FakeRustRoomMember(A_USER_ID_3), fakeRustRoomMember(A_USER_ID_3),
) )
) )
} }
@ -189,14 +189,14 @@ class RoomMemberListFetcherTest {
fun `fetchRoomMembers - with 'withCache' skips cache if there is already a ready state`() = runTest { fun `fetchRoomMembers - with 'withCache' skips cache if there is already a ready state`() = runTest {
val room = FakeRustRoom( val room = FakeRustRoom(
getMembersNoSync = { getMembersNoSync = {
FakeRoomMembersIterator(listOf(FakeRustRoomMember(A_USER_ID_4))) FakeRoomMembersIterator(listOf(fakeRustRoomMember(A_USER_ID_4)))
}, },
getMembers = { getMembers = {
FakeRoomMembersIterator( FakeRoomMembersIterator(
listOf( listOf(
FakeRustRoomMember(A_USER_ID), fakeRustRoomMember(A_USER_ID),
FakeRustRoomMember(A_USER_ID_2), fakeRustRoomMember(A_USER_ID_2),
FakeRustRoomMember(A_USER_ID_3), fakeRustRoomMember(A_USER_ID_3),
) )
) )
} }
@ -262,48 +262,23 @@ class FakeRoomMembersIterator(
} }
} }
class FakeRustRoomMember( private fun fakeRustRoomMember(
private val userId: UserId, userId: UserId,
private val displayName: String? = null, displayName: String? = null,
private val avatarUrl: String? = null, avatarUrl: String? = null,
private val membership: MembershipState = MembershipState.JOIN, membership: MembershipState = MembershipState.JOIN,
private val isNameAmbiguous: Boolean = false, isNameAmbiguous: Boolean = false,
private val powerLevel: Long = 0L, powerLevel: Long = 0L,
private val role: RoomMemberRole = RoomMemberRole.USER, isIgnored: Boolean = false,
) : RoomMember(NoPointer) { role: RoomMemberRole = RoomMemberRole.USER,
override fun userId(): String { ) = RoomMember(
return userId.value userId = userId.value,
} displayName = displayName,
avatarUrl = avatarUrl,
override fun displayName(): String? { membership = membership,
return displayName isNameAmbiguous = isNameAmbiguous,
} powerLevel = powerLevel,
normalizedPowerLevel = powerLevel,
override fun avatarUrl(): String? { isIgnored = isIgnored,
return avatarUrl suggestedRoleForPowerLevel = role,
} )
override fun membership(): MembershipState {
return membership
}
override fun isNameAmbiguous(): Boolean {
return isNameAmbiguous
}
override fun powerLevel(): Long {
return powerLevel
}
override fun normalizedPowerLevel(): Long {
return powerLevel
}
override fun isIgnored(): Boolean {
return false
}
override fun suggestedRoleForPowerLevel(): RoomMemberRole {
return role
}
}