diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt index 50d269aa41807331741ef65c8c63ef0eb1ddff11..7513fbe59497b541256a0c52c7c4885e71775706 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/messages/MessageListFragment.kt @@ -44,6 +44,7 @@ class MessageListFragment : ServiceBoundFragment() { private lateinit var adapter: MessageAdapter private var lastBuffer: BufferId? = null + private var previousMessageId: MsgId? = null private lateinit var backlogSettings: BacklogSettings @@ -106,25 +107,35 @@ class MessageListFragment : ServiceBoundFragment() { database.message().lastMsgId(it) } - var previousMessageId = -1 viewModel.sessionManager.zip(lastMessageId).observe( this, Observer { - val previous = lastBuffer ?: -1 - val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition() - val firstVisibleMessageId = adapter[firstVisibleItemPosition]?.messageId handler.post { val session = it?.first val message = it?.second val bufferSyncer = session?.bufferSyncer if (message != null && bufferSyncer != null && previousMessageId != message.messageId) { markAsRead(bufferSyncer, message.bufferId, message.messageId) - if (message.bufferId != previous) { - onBufferChange(previous, message.bufferId, firstVisibleMessageId, bufferSyncer) - } - lastBuffer = message.bufferId previousMessageId = message.messageId } } + }) + + viewModel.sessionManager.zip(viewModel.getBuffer()).observe( + this, Observer { + val previous = lastBuffer ?: -1 + val firstVisibleItemPosition = linearLayoutManager.findFirstVisibleItemPosition() + val firstVisibleMessageId = adapter[firstVisibleItemPosition]?.messageId + handler.post { + val session = it?.first + val buffer = it?.second + val bufferSyncer = session?.bufferSyncer + if (buffer != null && bufferSyncer != null) { + if (buffer != previous) { + onBufferChange(previous, buffer, firstVisibleMessageId, bufferSyncer) + } + lastBuffer = buffer + } + } } ) }