add TestableLiveDataDispatcher without android classes
This commit is contained in:
parent
24b380fff0
commit
7ed7a25bfe
|
|
@ -0,0 +1,49 @@
|
|||
package ru.touchin.lifecycle.viewmodel
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import io.reactivex.Completable
|
||||
import io.reactivex.Flowable
|
||||
import io.reactivex.Maybe
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.Single
|
||||
import io.reactivex.disposables.Disposable
|
||||
import ru.touchin.lifecycle.event.ContentEvent
|
||||
import ru.touchin.lifecycle.event.Event
|
||||
|
||||
class TestableLiveDataDispatcher(
|
||||
private val destroyable: BaseDestroyable = BaseDestroyable()
|
||||
) : LiveDataDispatcher, Destroyable by destroyable {
|
||||
|
||||
override fun <T> Flowable<out T>.dispatchTo(liveData: MutableLiveData<ContentEvent<T>>): Disposable {
|
||||
return untilDestroy(
|
||||
{ data -> liveData.value = ContentEvent.Success(data) },
|
||||
{ throwable -> liveData.value = ContentEvent.Error(throwable, liveData.value?.data) },
|
||||
{ liveData.value = ContentEvent.Complete(liveData.value?.data) })
|
||||
}
|
||||
|
||||
override fun <T> Observable<out T>.dispatchTo(liveData: MutableLiveData<ContentEvent<T>>): Disposable {
|
||||
return untilDestroy(
|
||||
{ data -> liveData.value = ContentEvent.Success(data) },
|
||||
{ throwable -> liveData.value = ContentEvent.Error(throwable, liveData.value?.data) },
|
||||
{ liveData.value = ContentEvent.Complete(liveData.value?.data) })
|
||||
}
|
||||
|
||||
override fun <T> Single<out T>.dispatchTo(liveData: MutableLiveData<ContentEvent<T>>): Disposable {
|
||||
return untilDestroy(
|
||||
{ data -> liveData.value = ContentEvent.Success(data) },
|
||||
{ throwable -> liveData.value = ContentEvent.Error(throwable, liveData.value?.data) })
|
||||
}
|
||||
|
||||
override fun <T> Maybe<out T>.dispatchTo(liveData: MutableLiveData<ContentEvent<T>>): Disposable {
|
||||
return untilDestroy(
|
||||
{ data -> liveData.value = ContentEvent.Success(data) },
|
||||
{ throwable -> liveData.value = ContentEvent.Error(throwable, liveData.value?.data) },
|
||||
{ liveData.value = ContentEvent.Complete(liveData.value?.data) })
|
||||
}
|
||||
|
||||
override fun Completable.dispatchTo(liveData: MutableLiveData<Event>): Disposable {
|
||||
return untilDestroy(
|
||||
{ liveData.value = Event.Complete },
|
||||
{ throwable -> liveData.value = Event.Error(throwable) })
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue