From cd8fcb2a9bca9ba46ce79fa2d95021522f60d0ef Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Wed, 13 Jun 2018 13:50:19 +0200 Subject: [PATCH] Fixes bug where info pages would not show up --- .../quasseldroid/ui/chat/ChatActivity.kt | 2 +- .../quasseldroid/ui/chat/ToolbarFragment.kt | 19 +++++++++++++------ .../chat/buffers/BufferViewConfigFragment.kt | 4 +++- .../ui/chat/nicks/NickListFragment.kt | 2 +- .../viewmodel/QuasselViewModel.kt | 11 ++++++++--- 5 files changed, 26 insertions(+), 12 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 8223f9825..5af5c7b4a 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 @@ -585,7 +585,7 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc }) // Only show nick list when we’re in a channel buffer - viewModel.bufferData.toLiveData().observe(this, Observer { + viewModel.bufferDataThrottled.toLiveData().observe(this, Observer { bufferData = it if (bufferData?.info?.type?.hasFlag(Buffer_Type.ChannelBuffer) == true) { drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.END) diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt index 4b5fdb6ff..bc4eec68e 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ToolbarFragment.kt @@ -91,7 +91,7 @@ class ToolbarFragment : ServiceBoundFragment() { description, messageSettings.colorizeMirc ) - combineLatest(viewModel.bufferData, viewModel.lag).toLiveData() + combineLatest(viewModel.bufferDataThrottled, viewModel.lag).toLiveData() .observe(this, Observer { if (it != null) { val (data, lag) = it @@ -119,15 +119,22 @@ class ToolbarFragment : ServiceBoundFragment() { }) actionArea.setOnClickListener { - viewModel.bufferData.value?.info?.let { info -> + val bufferData = viewModel.bufferData.value + bufferData?.info?.let { info -> when (info.type.toInt()) { BufferInfo.Type.QueryBuffer.toInt() -> { - UserInfoActivity.launch(requireContext(), bufferId = info.bufferId, openBuffer = true) + UserInfoActivity.launch( + requireContext(), + bufferId = info.bufferId, + openBuffer = true + ) } BufferInfo.Type.ChannelBuffer.toInt() -> { - ChannelInfoActivity.launch(requireContext(), - bufferId = info.bufferId, - openBuffer = true) + ChannelInfoActivity.launch( + requireContext(), + bufferId = info.bufferId, + openBuffer = true + ) } else -> null } 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 c39f71c70..f7ef6bd6c 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 @@ -267,7 +267,9 @@ class BufferViewConfigFragment : ServiceBoundFragment() { getColor(0, 0) } - combineLatest(viewModel.bufferList, viewModel.expandedNetworks, viewModel.selectedBuffer) + combineLatest(viewModel.bufferListThrottled, + viewModel.expandedNetworks, + viewModel.selectedBuffer) .toLiveData().zip(database.filtered().listen(accountId), accountDatabase.accounts().listen(accountId)) .observe(this, Observer { it -> diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt index d59244be1..ef857918d 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/nicks/NickListFragment.kt @@ -101,7 +101,7 @@ class NickListFragment : ServiceBoundFragment() { val colorContext = ColorContext(requireContext(), messageSettings) val avatarSize = resources.getDimensionPixelSize(R.dimen.avatar_size) - viewModel.nickData.toLiveData().observe(this, Observer { + viewModel.nickDataThrottled.toLiveData().observe(this, Observer { runInBackground { it?.asSequence()?.map { val nickName = it.nick 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 17e9e0e0a..0a0d88a58 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt @@ -202,7 +202,9 @@ class QuasselViewModel : ViewModel() { } else { Observable.just(BufferData()) } - }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS) + } + val bufferDataThrottled = bufferData.distinctUntilChanged().throttleLast(100, + TimeUnit.MILLISECONDS) val nickData: Observable<List<IrcUserItem>> = combineLatest(session, buffer) .switchMap { (sessionOptional, buffer) -> @@ -243,7 +245,8 @@ class QuasselViewModel : ViewModel() { } else { Observable.just(emptyList()) } - }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS) + } + val nickDataThrottled = nickData.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS) val bufferViewConfigs = bufferViewManager.mapSwitchMap { manager -> manager.liveBufferViewConfigs().map { ids -> @@ -517,5 +520,7 @@ class QuasselViewModel : ViewModel() { } else { Observable.just(Pair<BufferViewConfig?, List<BufferProps>>(null, emptyList())) } - }.distinctUntilChanged().throttleLast(100, TimeUnit.MILLISECONDS) + } + val bufferListThrottled = bufferList.distinctUntilChanged().throttleLast(100, + TimeUnit.MILLISECONDS) } -- GitLab