mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-12-24 16:51:07 +01:00
Merge pull request #5564 from SpiritCroc/timeline-chunk-double-linking
Fix another case of read markers not updating: Ensure proper double linking of TimelineChunks
This commit is contained in:
commit
073475854e
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 New Issue
Block a user