mirror of
https://github.com/element-hq/element-android
synced 2024-11-24 02:15:35 +03:00
Ensure proper double linking of TimelineChunks
We need both directions so getOffsetIndex() produces correct results in all cases.
This commit is contained in:
parent
d1a77d2eca
commit
91259bef40
2 changed files with 13 additions and 4 deletions
1
changelog.d/5564.bugfix
Normal file
1
changelog.d/5564.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix sometimes read marker not properly updating
|
|
@ -83,11 +83,15 @@ internal class TimelineChunk(private val chunkEntity: ChunkEntity,
|
|||
isLastBackward.set(chunkEntity.isLastBackward)
|
||||
}
|
||||
if (changeSet.isFieldChanged(ChunkEntityFields.NEXT_CHUNK.`$`)) {
|
||||
nextChunk = createTimelineChunk(chunkEntity.nextChunk)
|
||||
nextChunk = createTimelineChunk(chunkEntity.nextChunk).also {
|
||||
it?.prevChunk = this
|
||||
}
|
||||
nextChunkLatch?.complete(Unit)
|
||||
}
|
||||
if (changeSet.isFieldChanged(ChunkEntityFields.PREV_CHUNK.`$`)) {
|
||||
prevChunk = createTimelineChunk(chunkEntity.prevChunk)
|
||||
prevChunk = createTimelineChunk(chunkEntity.prevChunk).also {
|
||||
it?.nextChunk = this
|
||||
}
|
||||
prevChunkLatch?.complete(Unit)
|
||||
}
|
||||
}
|
||||
|
@ -194,7 +198,9 @@ internal class TimelineChunk(private val chunkEntity: ChunkEntity,
|
|||
when {
|
||||
nextChunkEntity != null -> {
|
||||
if (nextChunk == null) {
|
||||
nextChunk = createTimelineChunk(nextChunkEntity)
|
||||
nextChunk = createTimelineChunk(nextChunkEntity).also {
|
||||
it?.prevChunk = this
|
||||
}
|
||||
}
|
||||
nextChunk?.loadMore(offsetCount, direction, fetchFromServerIfNeeded) ?: LoadMoreResult.FAILURE
|
||||
}
|
||||
|
@ -210,7 +216,9 @@ internal class TimelineChunk(private val chunkEntity: ChunkEntity,
|
|||
when {
|
||||
prevChunkEntity != null -> {
|
||||
if (prevChunk == null) {
|
||||
prevChunk = createTimelineChunk(prevChunkEntity)
|
||||
prevChunk = createTimelineChunk(prevChunkEntity).also {
|
||||
it?.nextChunk = this
|
||||
}
|
||||
}
|
||||
prevChunk?.loadMore(offsetCount, direction, fetchFromServerIfNeeded) ?: LoadMoreResult.FAILURE
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue