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:
parent
dc5f93ef2f
commit
209e89469b
6 changed files with 52 additions and 84 deletions
|
|
@ -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" }
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue