From b5c4231ba8129532574dfd3d26a301f29ae16253 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Wed, 13 Jun 2018 15:25:41 +0200
Subject: [PATCH] Fixes bug where buffer list was incorrectly wrong

---
 .../ui/chat/buffers/BufferViewConfigFragment.kt    | 14 ++++++--------
 .../util/service/ServiceBoundFragment.kt           |  6 ++++++
 2 files changed, 12 insertions(+), 8 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 f7ef6bd6c..a6ab816a4 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
@@ -47,10 +47,7 @@ import de.kuschku.quasseldroid.settings.MessageSettings
 import de.kuschku.quasseldroid.ui.coresettings.network.NetworkEditActivity
 import de.kuschku.quasseldroid.util.ColorContext
 import de.kuschku.quasseldroid.util.avatars.AvatarHelper
-import de.kuschku.quasseldroid.util.helper.combineLatest
-import de.kuschku.quasseldroid.util.helper.styledAttributes
-import de.kuschku.quasseldroid.util.helper.toLiveData
-import de.kuschku.quasseldroid.util.helper.zip
+import de.kuschku.quasseldroid.util.helper.*
 import de.kuschku.quasseldroid.util.irc.format.IrcFormatDeserializer
 import de.kuschku.quasseldroid.util.service.ServiceBoundFragment
 import de.kuschku.quasseldroid.viewmodel.data.BufferHiddenState
@@ -269,10 +266,11 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
 
     combineLatest(viewModel.bufferListThrottled,
                   viewModel.expandedNetworks,
-                  viewModel.selectedBuffer)
-      .toLiveData().zip(database.filtered().listen(accountId),
-                        accountDatabase.accounts().listen(accountId))
-      .observe(this, Observer { it ->
+                  viewModel.selectedBuffer).toLiveData().switchMapNotNull { a ->
+      database.filtered().listen(accountId).zip(accountDatabase.accounts().listen(accountId)).map { (b, c) ->
+        Triple(a, b, c)
+      }
+    }.observe(this, Observer { it ->
         it?.let { (data, activityList, account) ->
           runInBackground {
             val (info, expandedNetworks, selected) = data
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt
index 86f0c7630..fb4d42363 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt
@@ -60,6 +60,12 @@ abstract class ServiceBoundFragment : DaggerFragment() {
     super.onCreate(savedInstanceState)
   }
 
+  override fun onStart() {
+    super.onStart()
+    accountId = context?.getSharedPreferences(Keys.Status.NAME, Context.MODE_PRIVATE)
+      ?.getLong(Keys.Status.selectedAccount, -1) ?: -1
+  }
+
   override fun onDestroy() {
     lifecycle.removeObserver(connection)
     super.onDestroy()
-- 
GitLab