From cd8fcb2a9bca9ba46ce79fa2d95021522f60d0ef Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 13 Jun 2018 13:50:19 +0200
Subject: [PATCH] Fixes bug where info pages would not show up

---
 .../quasseldroid/ui/chat/ChatActivity.kt      |  2 +-
 .../quasseldroid/ui/chat/ToolbarFragment.kt   | 19 +++++++++++++------
 .../chat/buffers/BufferViewConfigFragment.kt  |  4 +++-
 .../ui/chat/nicks/NickListFragment.kt         |  2 +-
 .../viewmodel/QuasselViewModel.kt             | 11 ++++++++---
 5 files changed, 26 insertions(+), 12 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
index 8223f9825..5af5c7b4a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
@@ -585,7 +585,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     })
 
     // Only show nick list when we’re in a channel buffer
-    viewModel.bufferData.toLiveData().observe(this, Observer {
+    viewModel.bufferDataThrottled.toLiveData().observe(this, Observer {
       bufferData = it
       if (bufferData?.info?.type?.hasFlag(Buffer_Type.ChannelBuffer) == true) {
         drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.END)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
index 4b5fdb6ff..bc4eec68e 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt
@@ -91,7 +91,7 @@ class ToolbarFragment : ServiceBoundFragment() {
       description, messageSettings.colorizeMirc
     )
 
-    combineLatest(viewModel.bufferData, viewModel.lag).toLiveData()
+    combineLatest(viewModel.bufferDataThrottled, viewModel.lag).toLiveData()
       .observe(this, Observer {
         if (it != null) {
           val (data, lag) = it
@@ -119,15 +119,22 @@ class ToolbarFragment : ServiceBoundFragment() {
       })
 
     actionArea.setOnClickListener {
-      viewModel.bufferData.value?.info?.let { info ->
+      val bufferData = viewModel.bufferData.value
+      bufferData?.info?.let { info ->
         when (info.type.toInt()) {
           BufferInfo.Type.QueryBuffer.toInt()   -> {
-            UserInfoActivity.launch(requireContext(), bufferId = info.bufferId, openBuffer = true)
+            UserInfoActivity.launch(
+              requireContext(),
+              bufferId = info.bufferId,
+              openBuffer = true
+            )
           }
           BufferInfo.Type.ChannelBuffer.toInt() -> {
-            ChannelInfoActivity.launch(requireContext(),
-                                       bufferId = info.bufferId,
-                                       openBuffer = true)
+            ChannelInfoActivity.launch(
+              requireContext(),
+              bufferId = info.bufferId,
+              openBuffer = true
+            )
           }
           else                                  -> null
         }
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 c39f71c70..f7ef6bd6c 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
@@ -267,7 +267,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       getColor(0, 0)
     }
 
-    combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer)
+    combineLatest(viewModel.bufferListThrottled,
+                  viewModel.expandedNetworks,
+                  viewModel.selectedBuffer)
       .toLiveData().zip(database.filtered().listen(accountId),
                         accountDatabase.accounts().listen(accountId))
       .observe(this, Observer { it ->
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
index d59244be1..ef857918d 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt
@@ -101,7 +101,7 @@ class NickListFragment : ServiceBoundFragment() {
     val colorContext = ColorContext(requireContext(), messageSettings)
 
     val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size)
-    viewModel.nickData.toLiveData().observe(this, Observer {
+    viewModel.nickDataThrottled.toLiveData().observe(this, Observer {
       runInBackground {
         it?.asSequence()?.map {
           val nickName = it.nick
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 17e9e0e0a..0a0d88a58 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -202,7 +202,9 @@ class QuasselViewModel : ViewModel() {
     } else {
       Observable.just(BufferData())
     }
-  }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
+  }
+  val bufferDataThrottled = bufferData.distinctUntilChanged().throttleLast(100,
+                                                                           TimeUnit.MILLISECONDS)
 
   val nickData: Observable<List<IrcUserItem>> = combineLatest(session, buffer)
     .switchMap { (sessionOptional, buffer) ->
@@ -243,7 +245,8 @@ class QuasselViewModel : ViewModel() {
       } else {
         Observable.just(emptyList())
       }
-    }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
+    }
+  val nickDataThrottled = nickData.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
 
   val bufferViewConfigs = bufferViewManager.mapSwitchMap { manager ->
     manager.liveBufferViewConfigs().map { ids ->
@@ -517,5 +520,7 @@ class QuasselViewModel : ViewModel() {
         } else {
           Observable.just(Pair<BufferViewConfig?, List<BufferProps>>(null, emptyList()))
         }
-      }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS)
+      }
+  val bufferListThrottled = bufferList.distinctUntilChanged().throttleLast(100,
+                                                                           TimeUnit.MILLISECONDS)
 }
-- 
GitLab