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 8223f982528d530405ab9e1d23e599d37bb785fd..5af5c7b4a864988e018b20e9b78166639e2a539d 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 4b5fdb6ff9458d4df711d4421bbcfbdf069c8f59..bc4eec68e71787b7cb1a08f84378a824852719ee 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 c39f71c7059f86f3aad9a444c6857d43792e4b0d..f7ef6bd6c67be9060580569525141a3079c79db6 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 d59244be1239b42900ee8405a08cdac11bc32a95..ef857918d26d0e812c87e4aae16bac118715c9d0 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 17e9e0e0a17275744757374756765edace3287b9..0a0d88a5830c690a2d89dced1c572abb42e6f7b6 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) }