Skip to content

Instantly share code, notes, and snippets.

@rozkminiacz
Created March 1, 2020 09:28
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 rozkminiacz/3d8538b941395e4cfcf2ae1105b02956 to your computer and use it in GitHub Desktop.
Save rozkminiacz/3d8538b941395e4cfcf2ae1105b02956 to your computer and use it in GitHub Desktop.
package tech.michalik.mvptesting
import io.reactivex.rxkotlin.subscribeBy
class MainScreenPresenter(
private val fetchCurrencyUseCase: FetchCurrencyUseCase,
private val schedulerProvider: SchedulerProvider
) : MainScreenContract.Presenter {
private var view: MainScreenContract.View? = null
override fun attach(view: MainScreenContract.View) {
this.view = view
fetchData()
}
private fun fetchData() {
fetchCurrencyUseCase.execute()
.subscribeOn(schedulerProvider.io)
.observeOn(schedulerProvider.main)
.doOnSubscribe { view?.toggleLoadingIndicator(loading = true) }
.doFinally { view?.toggleLoadingIndicator(loading = false) }
.subscribeBy(
onError = {
view?.displayError(it)
},
onSuccess = {
view?.displayData(it)
}
)
}
override fun detach() {
this.view = null
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment