From 075504977e1e77dd032ad19567fd1c4d1310baab Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 14 Jun 2018 11:49:14 +0200
Subject: [PATCH] Fix restoring of chatlist state

---
 .../chat/buffers/BufferViewConfigFragment.kt  | 23 ++++++++-----------
 .../viewmodel/QuasselViewModel.kt             |  2 --
 2 files changed, 9 insertions(+), 16 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
index a6ab816a4..a23db1f5f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/buffers/BufferViewConfigFragment.kt
@@ -264,7 +264,15 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       getColor(0, 0)
     }
 
-    combineLatest(viewModel.bufferListThrottled,
+    var hasRestoredChatListState = false
+    listAdapter.setOnUpdateFinishedListener {
+      if (!hasRestoredChatListState) {
+        savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_LIST)
+          ?.let(chatList.layoutManager::onRestoreInstanceState)
+        hasRestoredChatListState = true
+      }
+    }
+    combineLatest(viewModel.bufferList,
                   viewModel.expandedNetworks,
                   viewModel.selectedBuffer).toLiveData().switchMapNotNull { a ->
       database.filtered().listen(accountId).zip(accountDatabase.accounts().listen(accountId)).map { (b, c) ->
@@ -344,15 +352,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       })
     listAdapter.setOnClickListener(this@BufferViewConfigFragment::clickListener)
     listAdapter.setOnLongClickListener(this@BufferViewConfigFragment::longClickListener)
-
-    var hasRestoredChatListState = false
-    listAdapter.setOnUpdateFinishedListener {
-      if (!hasRestoredChatListState) {
-        savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_LIST)
-          ?.let(chatList.layoutManager::onRestoreInstanceState)
-        hasRestoredChatListState = true
-      }
-    }
     chatList.adapter = listAdapter
 
     viewModel.selectedBuffer.toLiveData().observe(this, Observer { buffer ->
@@ -445,10 +444,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     chatList.itemAnimator = DefaultItemAnimator()
     chatList.setItemViewCacheSize(10)
 
-    savedInstanceState?.run {
-      chatList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
-    }
-
     viewModel.stateReset.toLiveData().observe(this, Observer {
       listAdapter.submitList(emptyList())
       hasSetBufferViewConfigId = false
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index d147b4466..a04c36e95 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -520,8 +520,6 @@ class QuasselViewModel : ViewModel() {
           Observable.just(Pair<BufferViewConfig?, List<BufferProps>>(null, emptyList()))
         }
       }
-  val bufferListThrottled = bufferList.distinctUntilChanged().throttleLast(100,
-                                                                           TimeUnit.MILLISECONDS)
 
   companion object {
     const val MAX_RECENT_MESSAGES = 20
-- 
GitLab