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 9979f75e85cddcd67082093aced7f72f2b9cd15d..c3458a472b44bc76c949b4fae2c34030c8507500 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 513990d250bc471c05da76c718db2be56adec8b0..ddbdbdbb58e8477fe3a31a33449d3d0f39af931e 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 6fd66581504f499956ceb7fd072f38a870e38517..884213f0c0eb78064e06290db3ed98932507d2e0 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()