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