diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt index 2b54f1f05b32d45948a370236cc9f3cb22273009..757575c1f0991f593e496c0830c499aeeac7ec02 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MessageListFragment.kt @@ -82,25 +82,40 @@ class MessageListFragment : ServiceBoundFragment() { database = QuasselDatabase.Creator.init(context!!.applicationContext) val data = buffer.switchMap { - LivePagedListBuilder(database.message().findByBufferIdPaged(it), 20) + LivePagedListBuilder( + database.message().findByBufferIdPaged(it), + PagedList.Config.Builder() + .setPageSize(20) + .setPrefetchDistance(20) + .setInitialLoadSizeHint(20) + .setEnablePlaceholders(true) + .build() + ) .setBoundaryCallback(boundaryCallback) - .setInitialLoadKey(null) .build() } - sessionManager.zip(buffer).zip(data).observe( - this, Observer { - handler.post { - val session = it?.first?.first - val buffer = it?.first?.second - val bufferSyncer = session?.bufferSyncer - - if (buffer != null && bufferSyncer != null) { - bufferSyncer.requestMarkBufferAsRead(buffer) + handler.post { + val database = QuasselDatabase.Creator.init(this.context!!) + sessionManager.zip(buffer).zip(data).observe( + this, Observer { + handler.post { + val session = it?.first?.first + val buffer = it?.first?.second + val bufferSyncer = session?.bufferSyncer + + if (buffer != null && bufferSyncer != null) { + val lastMessage = database.message().findLastByBufferId(buffer) + + if (lastMessage != null) { + bufferSyncer.requestMarkBufferAsRead(buffer) + bufferSyncer.requestSetLastSeenMsg(buffer, lastMessage.messageId) + } + } } } + ) } - ) data.observe( this, Observer { list ->