Skip to content

Commit 0d05df0

Browse files
author
Marco Romano
authored
Upgrade rust sdk to .55 (#1365)
Accomodates breaking changes.
1 parent ee8d27e commit 0d05df0

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
150150
appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" }
151151
molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" }
152152
timber = "com.jakewharton.timber:timber:5.0.1"
153-
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.54"
153+
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.55"
154154
matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" }
155155
matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" }
156156
sqldelight-driver-android = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" }

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,13 @@ class RustMatrixRoom(
187187
_membersStateFlow.value = MatrixRoomMembersState.Pending(prevRoomMembers = currentMembers)
188188
var rustMembers: List<RoomMember>? = null
189189
try {
190-
rustMembers = innerRoom.members()
190+
rustMembers = buildList {
191+
while (true) {
192+
// Loading the whole iterator as a stop-gap measure.
193+
// We should probably implement some sort of paging in the future.
194+
addAll(innerRoom.members().nextChunk(1000u) ?: break)
195+
}
196+
}
191197
val mappedMembers = rustMembers.parallelMap(RoomMemberMapper::map)
192198
_membersStateFlow.value = MatrixRoomMembersState.Ready(mappedMembers)
193199
Result.success(Unit)

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListExtensions.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ import org.matrix.rustcomponents.sdk.RoomListServiceSyncIndicator
3737
import org.matrix.rustcomponents.sdk.RoomListServiceSyncIndicatorListener
3838
import timber.log.Timber
3939

40+
private const val SYNC_INDICATOR_DELAY_BEFORE_SHOWING = 1000u
41+
private const val SYNC_INDICATOR_DELAY_BEFORE_HIDING = 0u
42+
4043
fun RoomList.loadingStateFlow(): Flow<RoomListLoadingState> =
4144
mxCallbackFlow {
4245
val listener = object : RoomListLoadingStateListener {
@@ -93,7 +96,11 @@ fun RoomListService.syncIndicator(): Flow<RoomListServiceSyncIndicator> =
9396
}
9497
}
9598
tryOrNull {
96-
syncIndicator(listener)
99+
syncIndicator(
100+
SYNC_INDICATOR_DELAY_BEFORE_SHOWING,
101+
SYNC_INDICATOR_DELAY_BEFORE_HIDING,
102+
listener,
103+
)
97104
}
98105
}.buffer(Channel.UNLIMITED)
99106

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import io.element.android.libraries.matrix.impl.timeline.item.event.EventTimelin
2727
import io.element.android.libraries.matrix.impl.timeline.item.event.TimelineEventContentMapper
2828
import io.element.android.libraries.matrix.impl.timeline.item.virtual.VirtualTimelineItemMapper
2929
import io.element.android.libraries.matrix.impl.timeline.postprocessor.TimelineEncryptedHistoryPostProcessor
30-
import io.element.android.libraries.matrix.impl.util.TaskHandleBag
3130
import kotlinx.coroutines.CompletableDeferred
3231
import kotlinx.coroutines.CoroutineDispatcher
3332
import kotlinx.coroutines.CoroutineScope
@@ -103,7 +102,6 @@ class RustMatrixTimeline(
103102
init {
104103
Timber.d("Initialize timeline for room ${matrixRoom.roomId}")
105104

106-
val taskHandleBag = TaskHandleBag()
107105
roomCoroutineScope.launch(dispatcher) {
108106
innerRoom.timelineDiffFlow { initialList ->
109107
postItems(initialList)
@@ -120,17 +118,13 @@ class RustMatrixTimeline(
120118
}
121119
.launchIn(this)
122120

123-
taskHandleBag += fetchMembers().getOrNull()
124-
}.invokeOnCompletion {
125-
taskHandleBag.dispose()
121+
fetchMembers()
126122
}
127123
}
128124

129125
private suspend fun fetchMembers() = withContext(dispatcher) {
130126
initLatch.await()
131-
runCatching {
132-
innerRoom.fetchMembers()
133-
}
127+
innerRoom.fetchMembers()
134128
}
135129

136130
@OptIn(ExperimentalCoroutinesApi::class)

0 commit comments

Comments
 (0)