From 3e607a93ff3378974dc48f47c65bbe00a8bffcea Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 18 Feb 2018 16:38:33 +0100 Subject: [PATCH] Properly handle lastseenmessage --- .../ui/chat/MessageListFragment.kt | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) 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 2b54f1f05..757575c1f 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 -> -- GitLab