diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListItemExtensions.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListItemExtensions.kt index 24f292b456..1ab7d9f7d7 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListItemExtensions.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/roomlist/RoomListItemExtensions.kt @@ -23,7 +23,7 @@ import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter /** Returns a `Room` with an initialized timeline using the given [filter]. */ suspend fun RoomListItem.fullRoomWithTimeline(filter: TimelineEventTypeFilter? = null): Room { if (!isTimelineInitialized()) { - initTimeline(filter) + initTimeline(filter, "live") } return fullRoom() } 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 f8109259d5..6dfed57cec 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 @@ -27,13 +27,13 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.buffer import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.catch -import org.matrix.rustcomponents.sdk.BackPaginationStatusListener +import org.matrix.rustcomponents.sdk.PaginationStatusListener import org.matrix.rustcomponents.sdk.Timeline import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineItem import org.matrix.rustcomponents.sdk.TimelineListener import timber.log.Timber -import uniffi.matrix_sdk_ui.BackPaginationStatus +import uniffi.matrix_sdk_ui.PaginationStatus internal fun Timeline.timelineDiffFlow(onInitialList: suspend (List) -> Unit): Flow> = callbackFlow { @@ -58,10 +58,10 @@ internal fun Timeline.timelineDiffFlow(onInitialList: suspend (List = +internal fun Timeline.backPaginationStatusFlow(): Flow = mxCallbackFlow { - val listener = object : BackPaginationStatusListener { - override fun onUpdate(status: BackPaginationStatus) { + val listener = object : PaginationStatusListener { + override fun onUpdate(status: PaginationStatus) { trySendBlocking(status) } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt index b507690a4a..b16ff817e3 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/RustMatrixTimeline.kt @@ -50,8 +50,8 @@ import org.matrix.rustcomponents.sdk.Timeline import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineItem import timber.log.Timber -import uniffi.matrix_sdk_ui.BackPaginationStatus import uniffi.matrix_sdk_ui.EventItemOrigin +import uniffi.matrix_sdk_ui.PaginationStatus import java.util.Date import java.util.concurrent.atomic.AtomicBoolean @@ -152,21 +152,21 @@ class RustMatrixTimeline( ) } when (paginationStatus) { - BackPaginationStatus.IDLE -> { + PaginationStatus.IDLE -> { MatrixTimeline.PaginationState( isBackPaginating = false, hasMoreToLoadBackwards = true, beginningOfRoomReached = false, ) } - BackPaginationStatus.PAGINATING -> { + PaginationStatus.PAGINATING -> { MatrixTimeline.PaginationState( isBackPaginating = true, hasMoreToLoadBackwards = true, beginningOfRoomReached = false, ) } - BackPaginationStatus.TIMELINE_START_REACHED -> { + PaginationStatus.TIMELINE_END_REACHED -> { MatrixTimeline.PaginationState( isBackPaginating = false, hasMoreToLoadBackwards = false, @@ -229,7 +229,13 @@ class RustMatrixTimeline( runCatching { if (!canBackPaginate()) throw TimelineException.CannotPaginate Timber.v("Start back paginating for room ${matrixRoom.roomId} ") - innerTimeline.paginateBackwards(paginationOptions) + innerTimeline.paginateBackwards( + when (paginationOptions) { + is PaginationOptions.SimpleRequest -> paginationOptions.eventLimit + is PaginationOptions.UntilNumItems -> paginationOptions.eventLimit + } + ) + Unit }.onFailure { error -> if (error is TimelineException.CannotPaginate) { Timber.d("Can't paginate backwards on room ${matrixRoom.roomId}, we're already at the start")