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