diff --git a/changelog.d/2322.misc b/changelog.d/2322.misc new file mode 100644 index 0000000000..13bf77bce0 --- /dev/null +++ b/changelog.d/2322.misc @@ -0,0 +1 @@ +Improve room member list loading times, increase chunk size diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcher.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcher.kt index 1547769bc4..a4e58f3cbe 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcher.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/member/RoomMemberListFetcher.kt @@ -40,7 +40,7 @@ import kotlin.coroutines.coroutineContext internal class RoomMemberListFetcher( private val room: RoomInterface, private val dispatcher: CoroutineDispatcher, - private val pageSize: Int = 1000, + private val pageSize: Int = 10_000, ) { private val updatedRoomMemberMutex = Mutex() private val roomId = room.id() @@ -108,6 +108,7 @@ internal class RoomMemberListFetcher( // We should probably implement some sort of paging in the future. coroutineContext.ensureActive() val chunk = iterator.nextChunk(pageSize.toUInt()) + // Load next chunk. If null (no more items), exit the loop val members = chunk?.parallelMap(RoomMemberMapper::map) ?: break addAll(members) Timber.i("Emitting first $size members for room $roomId")