From f5d0cc9f32f190cf4ea4ae14319561ca887856bf Mon Sep 17 00:00:00 2001 From: Viktor De Pasquale Date: Sun, 26 Jan 2020 10:35:26 +0100 Subject: [PATCH] Updated helper lists so they are lazily populated --- .../magisk/ui/module/ModuleViewModel.kt | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt index a461c520f..dbe868ea4 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt @@ -75,12 +75,8 @@ class ModuleViewModel( private val itemNoneInstalled = TextItem(R.string.no_modules_found) private val itemNoneUpdatable = TextItem(R.string.module_update_none) - private val itemsInstalledHelpers = ObservableArrayList().also { - it.add(itemNoneInstalled) - } - private val itemsUpdatableHelpers = ObservableArrayList().also { - it.add(itemNoneUpdatable) - } + private val itemsInstalledHelpers = ObservableArrayList() + private val itemsUpdatableHelpers = ObservableArrayList() private val itemsCoreOnly = ObservableArrayList() private val itemsInstalled = diffListOf() @@ -159,16 +155,22 @@ class ModuleViewModel( } itemsInstalled.addOnListChangedCallback( - onItemRangeInserted = { sender, _, count -> - if (count > 0 || sender.size > 0) { - itemsInstalledHelpers.clear() + onItemRangeInserted = { _, _, _ -> + itemsInstalledHelpers.clear() + }, + onItemRangeRemoved = { sender, _, _ -> + if (sender.isEmpty() && itemsInstalledHelpers.isEmpty()) { + itemsInstalledHelpers.add(itemNoneInstalled) } } ) itemsUpdatable.addOnListChangedCallback( - onItemRangeInserted = { sender, _, count -> - if (count > 0 || sender.size > 0) { - itemsUpdatableHelpers.clear() + onItemRangeInserted = { _, _, _ -> + itemsUpdatableHelpers.clear() + }, + onItemRangeRemoved = { sender, _, _ -> + if (sender.isEmpty() && itemsUpdatableHelpers.isEmpty()) { + itemsUpdatableHelpers.add(itemNoneUpdatable) } } ) @@ -198,6 +200,10 @@ class ModuleViewModel( .map { it to itemsUpdatable.calculateDiff(it) } .observeOn(AndroidSchedulers.mainThread()) .doOnSuccess { itemsUpdatable.update(it.first, it.second) } + .doOnSuccess { + if (itemsInstalled.isEmpty()) itemsInstalledHelpers.add(itemNoneInstalled) + if (itemsUpdatable.isEmpty()) itemsUpdatableHelpers.add(itemNoneUpdatable) + } .ignoreElement()!! @Synchronized