From 20559b9fc4302116bf4dae7b52a45684ff910c4e Mon Sep 17 00:00:00 2001 From: ganfra Date: Wed, 4 Dec 2019 19:07:01 +0100 Subject: [PATCH] Pagination: fix some timeline issue --- .../internal/session/room/timeline/ClearUnlinkedEventsTask.kt | 4 ++++ .../session/room/timeline/DefaultGetContextOfEventTask.kt | 2 +- .../internal/session/room/timeline/EventContextResponse.kt | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/ClearUnlinkedEventsTask.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/ClearUnlinkedEventsTask.kt index 04cf810fe4..4bc06972fc 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/ClearUnlinkedEventsTask.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/ClearUnlinkedEventsTask.kt @@ -22,6 +22,7 @@ import im.vector.matrix.android.internal.database.helper.deleteOnCascade import im.vector.matrix.android.internal.database.model.ChunkEntity import im.vector.matrix.android.internal.database.model.ChunkEntityFields import im.vector.matrix.android.internal.database.model.EventEntityFields +import im.vector.matrix.android.internal.database.model.RoomEntity import im.vector.matrix.android.internal.database.query.where import im.vector.matrix.android.internal.task.Task import im.vector.matrix.android.internal.util.awaitTransaction @@ -43,6 +44,9 @@ internal class DefaultClearUnlinkedEventsTask @Inject constructor(private val mo unlinkedChunks.forEach { it.deleteOnCascade() } + val roomEntity = RoomEntity.where(localRealm, roomId = params.roomId).findFirst() + ?: return@awaitTransaction + roomEntity.untimelinedStateEvents.where().equalTo(EventEntityFields.IS_UNLINKED, true).findAll().deleteAllFromRealm() } } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultGetContextOfEventTask.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultGetContextOfEventTask.kt index 08d34d3056..7bb057b9f4 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultGetContextOfEventTask.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/DefaultGetContextOfEventTask.kt @@ -41,6 +41,6 @@ internal class DefaultGetContextOfEventTask @Inject constructor(private val room val response = executeRequest { apiCall = roomAPI.getContextOfEvent(params.roomId, params.eventId, params.limit, filter) } - return tokenChunkEventPersistor.insertInDb(response, params.roomId, PaginationDirection.BACKWARDS) + return tokenChunkEventPersistor.insertInDb(response, params.roomId, PaginationDirection.FORWARDS) } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/EventContextResponse.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/EventContextResponse.kt index f06697351e..3880313fce 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/EventContextResponse.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/EventContextResponse.kt @@ -31,6 +31,6 @@ data class EventContextResponse( ) : TokenChunkEvent { override val events: List by lazy { - eventsAfter.reversed() + listOf(event) + eventsBefore + eventsBefore.reversed() + listOf(event) + eventsAfter } }