SDK 0.2.16: fix compilation issue

This commit is contained in:
Benoit Marty 2024-04-25 17:59:51 +02:00 committed by Benoit Marty
parent 233a341bac
commit 6f2507f517
3 changed files with 17 additions and 11 deletions

View file

@ -23,7 +23,7 @@ import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter
/** Returns a `Room` with an initialized timeline using the given [filter]. */ /** Returns a `Room` with an initialized timeline using the given [filter]. */
suspend fun RoomListItem.fullRoomWithTimeline(filter: TimelineEventTypeFilter? = null): Room { suspend fun RoomListItem.fullRoomWithTimeline(filter: TimelineEventTypeFilter? = null): Room {
if (!isTimelineInitialized()) { if (!isTimelineInitialized()) {
initTimeline(filter) initTimeline(filter, "live")
} }
return fullRoom() return fullRoom()
} }

View file

@ -27,13 +27,13 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.buffer import kotlinx.coroutines.flow.buffer
import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.catch 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.Timeline
import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineDiff
import org.matrix.rustcomponents.sdk.TimelineItem import org.matrix.rustcomponents.sdk.TimelineItem
import org.matrix.rustcomponents.sdk.TimelineListener import org.matrix.rustcomponents.sdk.TimelineListener
import timber.log.Timber import timber.log.Timber
import uniffi.matrix_sdk_ui.BackPaginationStatus import uniffi.matrix_sdk_ui.PaginationStatus
internal fun Timeline.timelineDiffFlow(onInitialList: suspend (List<TimelineItem>) -> Unit): Flow<List<TimelineDiff>> = internal fun Timeline.timelineDiffFlow(onInitialList: suspend (List<TimelineItem>) -> Unit): Flow<List<TimelineDiff>> =
callbackFlow { callbackFlow {
@ -58,10 +58,10 @@ internal fun Timeline.timelineDiffFlow(onInitialList: suspend (List<TimelineItem
Timber.d(it, "timelineDiffFlow() failed") Timber.d(it, "timelineDiffFlow() failed")
}.buffer(Channel.UNLIMITED) }.buffer(Channel.UNLIMITED)
internal fun Timeline.backPaginationStatusFlow(): Flow<BackPaginationStatus> = internal fun Timeline.backPaginationStatusFlow(): Flow<PaginationStatus> =
mxCallbackFlow { mxCallbackFlow {
val listener = object : BackPaginationStatusListener { val listener = object : PaginationStatusListener {
override fun onUpdate(status: BackPaginationStatus) { override fun onUpdate(status: PaginationStatus) {
trySendBlocking(status) trySendBlocking(status)
} }
} }

View file

@ -50,8 +50,8 @@ import org.matrix.rustcomponents.sdk.Timeline
import org.matrix.rustcomponents.sdk.TimelineDiff import org.matrix.rustcomponents.sdk.TimelineDiff
import org.matrix.rustcomponents.sdk.TimelineItem import org.matrix.rustcomponents.sdk.TimelineItem
import timber.log.Timber import timber.log.Timber
import uniffi.matrix_sdk_ui.BackPaginationStatus
import uniffi.matrix_sdk_ui.EventItemOrigin import uniffi.matrix_sdk_ui.EventItemOrigin
import uniffi.matrix_sdk_ui.PaginationStatus
import java.util.Date import java.util.Date
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
@ -152,21 +152,21 @@ class RustMatrixTimeline(
) )
} }
when (paginationStatus) { when (paginationStatus) {
BackPaginationStatus.IDLE -> { PaginationStatus.IDLE -> {
MatrixTimeline.PaginationState( MatrixTimeline.PaginationState(
isBackPaginating = false, isBackPaginating = false,
hasMoreToLoadBackwards = true, hasMoreToLoadBackwards = true,
beginningOfRoomReached = false, beginningOfRoomReached = false,
) )
} }
BackPaginationStatus.PAGINATING -> { PaginationStatus.PAGINATING -> {
MatrixTimeline.PaginationState( MatrixTimeline.PaginationState(
isBackPaginating = true, isBackPaginating = true,
hasMoreToLoadBackwards = true, hasMoreToLoadBackwards = true,
beginningOfRoomReached = false, beginningOfRoomReached = false,
) )
} }
BackPaginationStatus.TIMELINE_START_REACHED -> { PaginationStatus.TIMELINE_END_REACHED -> {
MatrixTimeline.PaginationState( MatrixTimeline.PaginationState(
isBackPaginating = false, isBackPaginating = false,
hasMoreToLoadBackwards = false, hasMoreToLoadBackwards = false,
@ -229,7 +229,13 @@ class RustMatrixTimeline(
runCatching { runCatching {
if (!canBackPaginate()) throw TimelineException.CannotPaginate if (!canBackPaginate()) throw TimelineException.CannotPaginate
Timber.v("Start back paginating for room ${matrixRoom.roomId} ") 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 -> }.onFailure { error ->
if (error is TimelineException.CannotPaginate) { if (error is TimelineException.CannotPaginate) {
Timber.d("Can't paginate backwards on room ${matrixRoom.roomId}, we're already at the start") Timber.d("Can't paginate backwards on room ${matrixRoom.roomId}, we're already at the start")