Use postValue in CompletableViewModel

pull/1196/head
Alex Baker 5 years ago
parent fe79cc6b12
commit d3ce1a41ac

@ -1,13 +1,12 @@
package org.tasks.ui package org.tasks.ui
import androidx.lifecycle.* import androidx.lifecycle.*
import io.reactivex.disposables.CompositeDisposable
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import timber.log.Timber
abstract class CompletableViewModel<T> : ViewModel() { abstract class CompletableViewModel<T> : ViewModel() {
private val data = MutableLiveData<T>() private val data = MutableLiveData<T>()
private val error = MutableLiveData<Throwable>() private val error = MutableLiveData<Throwable>()
private val disposables = CompositeDisposable()
var inProgress = false var inProgress = false
private set private set
@ -28,16 +27,15 @@ abstract class CompletableViewModel<T> : ViewModel() {
if (!inProgress) { if (!inProgress) {
inProgress = true inProgress = true
try { try {
data.value = callable.invoke() data.postValue(callable.invoke())
} catch (e: Exception) { } catch (e: Exception) {
error.value = e Timber.e(e)
error.postValue(e)
} }
inProgress = false inProgress = false
} }
} }
override fun onCleared() = disposables.dispose()
fun removeObserver(owner: LifecycleOwner) { fun removeObserver(owner: LifecycleOwner) {
data.removeObservers(owner) data.removeObservers(owner)
error.removeObservers(owner) error.removeObservers(owner)

Loading…
Cancel
Save