diff --git a/lce-rxjava3/src/main/java/com/laimiux/lce/rxjava3/Init.kt b/lce-rxjava3/src/main/java/com/laimiux/lce/rxjava3/Init.kt index c1c52f6..40d4fed 100644 --- a/lce-rxjava3/src/main/java/com/laimiux/lce/rxjava3/Init.kt +++ b/lce-rxjava3/src/main/java/com/laimiux/lce/rxjava3/Init.kt @@ -3,6 +3,7 @@ package com.laimiux.lce.rxjava3 import com.laimiux.lce.CE import com.laimiux.lce.CT import com.laimiux.lce.LC +import com.laimiux.lce.LCE import com.laimiux.lce.UC import com.laimiux.lce.UCE import com.laimiux.lce.UCT @@ -11,26 +12,58 @@ import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.core.Observable import io.reactivex.rxjava3.core.Single -inline fun Completable.toUCE( +inline fun Completable.toLCE( + value: C, + crossinline mapLoading: () -> L, + crossinline mapError: (Throwable) -> E +): Observable> { + return toSingleDefault(value).toLCE(mapLoading, mapError) +} + +inline fun Single.toLCE( + crossinline mapLoading: () -> L, + crossinline mapError: (Throwable) -> E +): Observable> { + return toObservable().toLCE(mapLoading, mapError) +} + +inline fun Maybe.toLCE( + crossinline mapLoading: () -> L, + crossinline mapError: (Throwable) -> E +): Observable> { + return toObservable().toLCE(mapLoading, mapError) +} + +inline fun Observable.toLCE( + crossinline mapLoading: () -> L, + crossinline mapError: (Throwable) -> E +): Observable> { + return this + .map { LCE.content(it) as LCE } + .onErrorReturn { LCE.error(mapError(it)) } + .startWithItem(LCE.loading(mapLoading())) +} + +inline fun Completable.toUCE( value: C, crossinline mapError: (Throwable) -> E ): Observable> { return toSingleDefault(value).toUCE(mapError) } -inline fun Single.toUCE( +inline fun Single.toUCE( crossinline mapError: (Throwable) -> E ): Observable> { return toObservable().toUCE(mapError) } -inline fun Maybe.toUCE( +inline fun Maybe.toUCE( crossinline mapError: (Throwable) -> E ): Observable> { return toObservable().toUCE(mapError) } -inline fun Observable.toUCE( +inline fun Observable.toUCE( crossinline mapError: (Throwable) -> E ): Observable> { return this