From d4058175b4504fabcd3e3e5cf165c28ac447d584 Mon Sep 17 00:00:00 2001 From: Viktor De Pasquale Date: Mon, 22 Apr 2019 18:28:40 +0200 Subject: [PATCH] Fixed list query not being disposed so it could occasionally crash due to several changes rewriting each other --- .../com/topjohnwu/magisk/ui/module/ModuleViewModel.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 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 36f281f33..031d67c3c 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 @@ -26,6 +26,7 @@ import com.topjohnwu.magisk.utils.Utils import com.topjohnwu.magisk.utils.toSingle import com.topjohnwu.magisk.utils.update import io.reactivex.Single +import io.reactivex.disposables.Disposable import me.tatarka.bindingcollectionadapter2.OnItemBind class ModuleViewModel( @@ -44,8 +45,13 @@ class ModuleViewModel( itemBinding.bindExtra(BR.viewModel, this@ModuleViewModel) } + private var queryDisposable: Disposable? = null + init { - query.addOnPropertyChangedCallback { query() } + query.addOnPropertyChangedCallback { + queryDisposable?.dispose() + queryDisposable = query() + } Event.register(this) refresh() } @@ -88,7 +94,6 @@ class ModuleViewModel( private fun query() = queryRaw() .subscribeK { itemsRemote.update(it.first, it.second) } - .add() private fun queryRaw(query: String = this.query.value) = allItems.toSingle() .map { it.filterIsInstance() }