diff --git a/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt index 35cf3cc67..8d2c59d58 100644 --- a/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/arch/BaseViewModel.kt @@ -21,9 +21,7 @@ import com.topjohnwu.magisk.events.PermissionEvent import com.topjohnwu.magisk.events.SnackbarEvent import kotlinx.coroutines.Job -abstract class BaseViewModel( - initialState: State = State.LOADING -) : ViewModel(), ObservableHost { +abstract class BaseViewModel : ViewModel(), ObservableHost { override var callbacks: PropertyChangeRegistry? = null @@ -40,7 +38,7 @@ abstract class BaseViewModel( val viewEvents: LiveData get() = _viewEvents - var state= initialState + var state = State.LOADING set(value) = set(value, field, { field = it }, BR.loading, BR.loaded, BR.loadFailed) private val _viewEvents = MutableLiveData() @@ -60,6 +58,8 @@ abstract class BaseViewModel( protected open fun refresh(): Job? = null + open fun onNetworkChanged(network: Boolean) {} + fun withPermission(permission: String, callback: (Boolean) -> Unit) { PermissionEvent(permission, callback).publish() } diff --git a/app/src/main/java/com/topjohnwu/magisk/arch/ViewModelHolder.kt b/app/src/main/java/com/topjohnwu/magisk/arch/ViewModelHolder.kt index d660e109b..011ba79c1 100644 --- a/app/src/main/java/com/topjohnwu/magisk/arch/ViewModelHolder.kt +++ b/app/src/main/java/com/topjohnwu/magisk/arch/ViewModelHolder.kt @@ -17,12 +17,8 @@ interface ViewModelHolder : LifecycleOwner, ViewModelStoreOwner { val viewModel: BaseViewModel fun startObserveLiveData() { - viewModel.viewEvents.observe(this) { - onEventDispatched(it) - } - Info.isConnected.observe(this) { - viewModel.requestRefresh() - } + viewModel.viewEvents.observe(this, this::onEventDispatched) + Info.isConnected.observe(this, viewModel::onNetworkChanged) } /** diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt index 5d882a539..34b110b95 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt @@ -104,13 +104,9 @@ class HomeViewModel( ensureEnv() } - val showTest = false - - fun onTestPressed() = object : ViewEvent(), ActivityExecutor { - override fun invoke(activity: UIActivity<*>) { - /* Entry point to trigger test events within the app */ - } - }.publish() + override fun onNetworkChanged(network: Boolean) { + requestRefresh() + } fun onProgressUpdate(progress: Float, subject: Subject) { if (subject is App) @@ -151,4 +147,10 @@ class HomeViewModel( checkedEnv = true } + val showTest = false + fun onTestPressed() = object : ViewEvent(), ActivityExecutor { + override fun invoke(activity: UIActivity<*>) { + /* Entry point to trigger test events within the app */ + } + }.publish() } 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 99cf6b22e..057d01901 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 @@ -52,6 +52,10 @@ class ModuleViewModel : BaseViewModel() { } } + override fun onNetworkChanged(network: Boolean) { + requestRefresh() + } + private suspend fun loadInstalled() { val installed = LocalModule.installed().map { LocalModuleRvItem(it) } val diff = withContext(Dispatchers.Default) {