From b5650b2b8f2170da22556381b4bdbfbdec349477 Mon Sep 17 00:00:00 2001 From: ganfra Date: Tue, 9 Jul 2019 14:44:59 +0200 Subject: [PATCH] Pagination : avoid breaking timeline when paginating twice from same token (race condition) --- .../session/room/timeline/TokenChunkEventPersistor.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/TokenChunkEventPersistor.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/TokenChunkEventPersistor.kt index 508818542c..ae60969bf1 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/TokenChunkEventPersistor.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/timeline/TokenChunkEventPersistor.kt @@ -128,6 +128,12 @@ internal class TokenChunkEventPersistor @Inject constructor(private val monarchy nextToken = receivedChunk.start prevToken = receivedChunk.end } + + if (ChunkEntity.find(realm, roomId, nextToken = nextToken) != null || ChunkEntity.find(realm, roomId, prevToken = prevToken) != null) { + Timber.v("Already inserted - SKIP") + return@tryTransactionSync + } + val prevChunk = ChunkEntity.find(realm, roomId, nextToken = prevToken) val nextChunk = ChunkEntity.find(realm, roomId, prevToken = nextToken)