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
+          }
+        }
       }
       )
     }