From 075504977e1e77dd032ad19567fd1c4d1310baab Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Thu, 14 Jun 2018 11:49:14 +0200 Subject: [PATCH] Fix restoring of chatlist state --- .../chat/buffers/BufferViewConfigFragment.kt | 23 ++++++++----------- .../viewmodel/QuasselViewModel.kt | 2 -- 2 files changed, 9 insertions(+), 16 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 a6ab816a4..a23db1f5f 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 @@ -264,7 +264,15 @@ class BufferViewConfigFragment : ServiceBoundFragment() { getColor(0, 0) } - combineLatest(viewModel.bufferListThrottled, + var hasRestoredChatListState = false + listAdapter.setOnUpdateFinishedListener { + if (!hasRestoredChatListState) { + savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_LIST) + ?.let(chatList.layoutManager::onRestoreInstanceState) + hasRestoredChatListState = true + } + } + combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer).toLiveData().switchMapNotNull { a -> database.filtered().listen(accountId).zip(accountDatabase.accounts().listen(accountId)).map { (b, c) -> @@ -344,15 +352,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() { }) listAdapter.setOnClickListener(this@BufferViewConfigFragment::clickListener) listAdapter.setOnLongClickListener(this@BufferViewConfigFragment::longClickListener) - - var hasRestoredChatListState = false - listAdapter.setOnUpdateFinishedListener { - if (!hasRestoredChatListState) { - savedInstanceState?.getParcelable<Parcelable>(KEY_STATE_LIST) - ?.let(chatList.layoutManager::onRestoreInstanceState) - hasRestoredChatListState = true - } - } chatList.adapter = listAdapter viewModel.selectedBuffer.toLiveData().observe(this, Observer { buffer -> @@ -445,10 +444,6 @@ class BufferViewConfigFragment : ServiceBoundFragment() { chatList.itemAnimator = DefaultItemAnimator() chatList.setItemViewCacheSize(10) - savedInstanceState?.run { - chatList.layoutManager.onRestoreInstanceState(getParcelable(KEY_STATE_LIST)) - } - viewModel.stateReset.toLiveData().observe(this, Observer { listAdapter.submitList(emptyList()) hasSetBufferViewConfigId = false 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 d147b4466..a04c36e95 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt @@ -520,8 +520,6 @@ class QuasselViewModel : ViewModel() { Observable.just(Pair<BufferViewConfig?, List<BufferProps>>(null, emptyList())) } } - val bufferListThrottled = bufferList.distinctUntilChanged().throttleLast(100, - TimeUnit.MILLISECONDS) companion object { const val MAX_RECENT_MESSAGES = 20 -- GitLab