Skip to content

Instantly share code, notes, and snippets.

@tieorange
Created June 5, 2019 13:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tieorange/e13666fe585073e5993de851b86f36d4 to your computer and use it in GitHub Desktop.
Save tieorange/e13666fe585073e5993de851b86f36d4 to your computer and use it in GitHub Desktop.
import io.reactivex.ObservableTransformer
import io.reactivex.ObservableTransformer
object RxUtil {
private val LOADING_MESSAGE = "Loading"
fun <T> applyUIDefaults(rxFragment: RxFragment): ObservableTransformer<T, T> {
return { upstream ->
upstream
.compose(RxUtil.addToCompositeDisposable<Any>(rxFragment))
.compose(RxUtil.applySchedulers<Any>())
.compose(RxUtil.applyRequestStatus<Any>(rxFragment))
.compose(RxUtil.showLoadingDialog<Any>(rxFragment))
}
}
private fun <T> applyRequestStatus(rxFragment: RxFragment): ObservableTransformer<T, T> {
return { upstream ->
upstream.doOnSubscribe({ disposable -> rxFragment.setRequestInProgress(true) })
.doOnTerminate({ rxFragment.setRequestInProgress(false) })
}
}
private fun <T> applySchedulers(): ObservableTransformer<T, T> {
return schedulersTransformer as ObservableTransformer<T, T>
}
private fun <T> addToCompositeDisposable(rxFragment: RxFragment): ObservableTransformer<T, T> {
return { upstream -> upstream.doOnSubscribe({ disposable -> rxFragment.getCompositeDisposable().add(disposable) }) }
}
private fun <T> showLoadingDialog(rxFragment: RxFragment): ObservableTransformer<T, T> {
return { observable ->
observable
.doOnSubscribe({ disposable -> DialogUtils.showProgressDialog(rxFragment.getFragmentManager(), LOADING_MESSAGE) })
.doOnTerminate({ DialogUtils.hideProgressDialog(rxFragment.getFragmentManager()) })
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment