From f992ec863d1628ba9c2d2575cd37efba1f3462c9 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Fri, 8 Jun 2018 18:05:50 +0200
Subject: [PATCH] Fixes #122 in a much cleaner and more reusable way

---
 .../de/kuschku/quasseldroid/service/QuasselService.kt |  7 +++----
 .../de/kuschku/quasseldroid/ui/chat/ChatActivity.kt   |  2 +-
 .../ui/chat/buffers/BufferViewConfigFragment.kt       | 11 +----------
 3 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
index 13bcc255c..0e177366c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt
@@ -417,10 +417,9 @@ class QuasselService : DaggerLifecycleService(),
       disconnect: Boolean? = null,
       markRead: BufferId? = null,
       markReadMessage: MsgId? = null
-    ): ComponentName = context.startService(intent(context,
-                                                   disconnect,
-                                                   markRead,
-                                                   markReadMessage))
+    ): ComponentName = context.startService(
+      intent(context, disconnect, markRead, markReadMessage)
+    )
 
     fun intent(
       context: Context,
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..a355dc046 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
@@ -857,8 +857,8 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
 
   override fun onSelectAccount() {
     if (!startedSelection) {
-      startActivityForResult(AccountSelectionActivity.intent(this), REQUEST_SELECT_ACCOUNT)
       resetAccount()
+      startActivityForResult(AccountSelectionActivity.intent(this), REQUEST_SELECT_ACCOUNT)
     }
   }
 
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 06e0494ae..e75cc68a9 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
@@ -223,13 +223,7 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
     })
 
     var hasSetBufferViewConfigId = false
-    var hasRestoredSpinnerState = false
     adapter.setOnUpdateFinishedListener {
-      if (!hasRestoredSpinnerState) {
-        savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_SPINNER)
-          ?.let(chatListSpinner::onRestoreInstanceState)
-        hasRestoredSpinnerState = true
-      }
       if (!hasSetBufferViewConfigId) {
         chatListSpinner.setSelection(adapter.indexOf(viewModel.bufferViewConfigId.value).nullIf { it == -1 }
                                      ?: 0)
@@ -446,12 +440,11 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
 
     savedInstanceState?.run {
       chatList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST))
-      chatListSpinner.onRestoreInstanceState(getParcelable(KEY_STATE_SPINNER))
     }
 
     viewModel.stateReset.toLiveData().observe(this, Observer {
+      listAdapter.submitList(emptyList())
       hasSetBufferViewConfigId = false
-      hasRestoredSpinnerState = false
     })
 
     return view
@@ -460,7 +453,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
   override fun onSaveInstanceState(outState: Bundle) {
     super.onSaveInstanceState(outState)
     outState.putParcelable(KEY_STATE_LIST, chatList.layoutManager.onSaveInstanceState())
-    outState.putParcelable(KEY_STATE_SPINNER, chatListSpinner.onSaveInstanceState())
   }
 
   private fun clickListener(it: BufferId) {
@@ -483,6 +475,5 @@ class BufferViewConfigFragment : ServiceBoundFragment() {
 
   companion object {
     private const val KEY_STATE_LIST = "STATE_LIST"
-    private const val KEY_STATE_SPINNER = "STATE_SPINNER"
   }
 }
-- 
GitLab