diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index cdd523f8de..44dc23d629 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -174,7 +174,7 @@ jsoup = "org.jsoup:jsoup:1.19.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:2.0.0" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.2.26" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:25.3.5" matrix_richtexteditor = { module = "io.element.android:wysiwyg", 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" } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt index 87c61ca17c..aac69e8844 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustMatrixRoom.kt @@ -83,7 +83,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.withContext -import org.matrix.rustcomponents.sdk.AllowedMessageTypes import org.matrix.rustcomponents.sdk.DateDividerMode import org.matrix.rustcomponents.sdk.IdentityStatusChangeListener import org.matrix.rustcomponents.sdk.KnockRequestsListener @@ -92,6 +91,7 @@ import org.matrix.rustcomponents.sdk.RoomInfoListener import org.matrix.rustcomponents.sdk.RoomListItem import org.matrix.rustcomponents.sdk.RoomMessageEventMessageType import org.matrix.rustcomponents.sdk.TimelineConfiguration +import org.matrix.rustcomponents.sdk.TimelineFilter import org.matrix.rustcomponents.sdk.TimelineFocus import org.matrix.rustcomponents.sdk.TypingNotificationsListener import org.matrix.rustcomponents.sdk.UserPowerLevelUpdate @@ -234,9 +234,9 @@ class RustMatrixRoom( ) } - val allowedMessageTypes = when (createTimelineParams) { + val filter = when (createTimelineParams) { is CreateTimelineParams.MediaOnly, - is CreateTimelineParams.MediaOnlyFocused -> AllowedMessageTypes.Only( + is CreateTimelineParams.MediaOnlyFocused -> TimelineFilter.OnlyMessage( types = listOf( RoomMessageEventMessageType.FILE, RoomMessageEventMessageType.IMAGE, @@ -245,7 +245,7 @@ class RustMatrixRoom( ) ) is CreateTimelineParams.Focused, - CreateTimelineParams.PinnedOnly -> AllowedMessageTypes.All + CreateTimelineParams.PinnedOnly -> TimelineFilter.All } val internalIdPrefix = when (createTimelineParams) { @@ -268,9 +268,10 @@ class RustMatrixRoom( innerRoom.timelineWithConfiguration( configuration = TimelineConfiguration( focus = focus, - allowedMessageTypes = allowedMessageTypes, + filter = filter, internalIdPrefix = internalIdPrefix, dateDividerMode = dateDividerMode, + trackReadReceipts = false, ) ).let { inner -> val mode = when (createTimelineParams) { diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RoomTimelineExtensions.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RoomTimelineExtensions.kt index 0d79d0911e..49fe7d90cc 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RoomTimelineExtensions.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RoomTimelineExtensions.kt @@ -20,11 +20,11 @@ import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineInterface import org.matrix.rustcomponents.sdk.TimelineListener import timber.log.Timber -import uniffi.matrix_sdk_ui.LiveBackPaginationStatus +import uniffi.matrix_sdk.RoomPaginationStatus -internal fun TimelineInterface.liveBackPaginationStatus(): Flow = callbackFlow { +internal fun TimelineInterface.liveBackPaginationStatus(): Flow = callbackFlow { val listener = object : PaginationStatusListener { - override fun onUpdate(status: LiveBackPaginationStatus) { + override fun onUpdate(status: RoomPaginationStatus) { trySend(status) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt index 1fbfea7b13..3bd3699037 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimeline.kt @@ -73,7 +73,7 @@ import org.matrix.rustcomponents.sdk.SendAttachmentJoinHandle import org.matrix.rustcomponents.sdk.UploadParameters import org.matrix.rustcomponents.sdk.use import timber.log.Timber -import uniffi.matrix_sdk_ui.LiveBackPaginationStatus +import uniffi.matrix_sdk.RoomPaginationStatus import java.io.File import org.matrix.rustcomponents.sdk.EventOrTransactionId as RustEventOrTransactionId import org.matrix.rustcomponents.sdk.Timeline as InnerTimeline @@ -148,8 +148,8 @@ class RustTimeline( .onEach { backPaginationStatus -> updatePaginationStatus(Timeline.PaginationDirection.BACKWARDS) { when (backPaginationStatus) { - is LiveBackPaginationStatus.Idle -> it.copy(isPaginating = false, hasMoreToLoad = !backPaginationStatus.hitStartOfTimeline) - is LiveBackPaginationStatus.Paginating -> it.copy(isPaginating = true, hasMoreToLoad = true) + is RoomPaginationStatus.Idle -> it.copy(isPaginating = false, hasMoreToLoad = !backPaginationStatus.hitTimelineStart) + is RoomPaginationStatus.Paginating -> it.copy(isPaginating = true, hasMoreToLoad = true) } } } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustTimeline.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustTimeline.kt index 042d4c98a1..6fa8e75704 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustTimeline.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/fixtures/fakes/FakeRustTimeline.kt @@ -13,7 +13,7 @@ import org.matrix.rustcomponents.sdk.TaskHandle import org.matrix.rustcomponents.sdk.Timeline import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineListener -import uniffi.matrix_sdk_ui.LiveBackPaginationStatus +import uniffi.matrix_sdk.RoomPaginationStatus class FakeRustTimeline : Timeline(NoPointer) { private var listener: TimelineListener? = null @@ -32,7 +32,7 @@ class FakeRustTimeline : Timeline(NoPointer) { return FakeRustTaskHandle() } - fun emitPaginationStatus(status: LiveBackPaginationStatus) { + fun emitPaginationStatus(status: RoomPaginationStatus) { paginationStatusListener!!.onUpdate(status) } diff --git a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt index 8e9120a839..0dd2ba3b86 100644 --- a/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt +++ b/libraries/matrix/impl/src/test/kotlin/io/element/android/libraries/matrix/impl/timeline/RustTimelineTest.kt @@ -34,7 +34,7 @@ import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Test import org.matrix.rustcomponents.sdk.TimelineChange -import uniffi.matrix_sdk_ui.LiveBackPaginationStatus +import uniffi.matrix_sdk.RoomPaginationStatus import org.matrix.rustcomponents.sdk.Timeline as InnerTimeline class RustTimelineTest { @@ -78,10 +78,10 @@ class RustTimelineTest { // Start pagination sut.paginate(Timeline.PaginationDirection.BACKWARDS) // Simulate SDK starting pagination - inner.emitPaginationStatus(LiveBackPaginationStatus.Paginating) + inner.emitPaginationStatus(RoomPaginationStatus.Paginating) // No new events received // Simulate SDK stopping pagination, more event to load - inner.emitPaginationStatus(LiveBackPaginationStatus.Idle(hitStartOfTimeline = false)) + inner.emitPaginationStatus(RoomPaginationStatus.Idle(hitTimelineStart = false)) // expect an item to be emitted, with an updated timestamp with(awaitItem()) { assertThat(size).isEqualTo(2)