From 588d15d88b065166b6da471e93bf1f4faf86803d Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 7 Jun 2018 22:00:01 +0200
Subject: [PATCH] (Hopefully) fixes #122

---
 .../java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt | 4 ++++
 .../ui/chat/buffers/BufferViewConfigFragment.kt          | 6 ++++++
 .../kuschku/quasseldroid/viewmodel/QuasselViewModel.kt   | 9 ++++++---
 3 files changed, 16 insertions(+), 3 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 9979f75e8..c3458a472 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
@@ -604,6 +604,10 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
   }
 
   override fun onStart() {
+    val buffers = viewModel.bufferList.value
+    val bufferId = viewModel.buffer.value
+    val bufferViewConfigId = viewModel.bufferViewConfigId.value
+    val bufferViewConfig = viewModel.bufferViewConfig.value
     if (Settings.autoComplete(this) != autoCompleteSettings) {
       recreate()
     }
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 513990d25..ddbdbdbb5 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
@@ -231,6 +231,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       }
       if (!hasSetBufferViewConfigId) {
         chatListSpinner.setSelection(adapter.indexOf(viewModel.bufferViewConfigId.value))
+        viewModel.bufferViewConfigId.onNext(chatListSpinner.selectedItemId.toInt())
         hasSetBufferViewConfigId = true
       }
     }
@@ -446,6 +447,11 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
       chatListSpinner.onRestoreInstanceState(getParcelable(KEY_STATE_SPINNER))
     }
 
+    viewModel.stateReset.toLiveData().observe(this, Observer {
+      hasSetBufferViewConfigId = false
+      hasRestoredSpinnerState = false
+    })
+
     return view
   }
 
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 6fd665815..884213f0c 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -47,13 +47,16 @@ import java.util.concurrent.TimeUnit
 
 class QuasselViewModel : ViewModel() {
   fun resetAccount() {
+    stateReset.onNext(Unit)
     buffer.onNext(Int.MAX_VALUE)
-    bufferViewConfigId.onNext(Int.MAX_VALUE)
+    bufferViewConfigId.onNext(-1)
     selectedMessages.onNext(emptyMap())
     expandedMessages.onNext(emptySet())
     recentlySentMessages.onNext(emptyList())
   }
 
+  val stateReset = PublishSubject.create<Unit>()
+
   val backendWrapper = BehaviorSubject.createDefault(Observable.empty<Optional<Backend>>())
 
   val selectedMessages = BehaviorSubject.createDefault(emptyMap<MsgId, FormattedMessage>())
@@ -69,7 +72,7 @@ class QuasselViewModel : ViewModel() {
   val buffer = BehaviorSubject.createDefault(Int.MAX_VALUE)
   val bufferOpened = PublishSubject.create<Unit>()
 
-  val bufferViewConfigId = BehaviorSubject.createDefault(Int.MAX_VALUE)
+  val bufferViewConfigId = BehaviorSubject.createDefault(-1)
 
   val MAX_RECENT_MESSAGES = 20
   val recentlySentMessages = BehaviorSubject.createDefault(emptyList<CharSequence>())
@@ -321,7 +324,7 @@ class QuasselViewModel : ViewModel() {
       }
     }
 
-  val bufferList: Observable<Pair<BufferViewConfig?, List<BufferProps>>?> =
+  val bufferList: Observable<Pair<BufferViewConfig?, List<BufferProps>>> =
     combineLatest(session, bufferViewConfig, showHidden)
       .switchMap { (sessionOptional, configOptional, showHiddenRaw) ->
         val session = sessionOptional.orNull()
-- 
GitLab