Skip to content

Instantly share code, notes, and snippets.

@ar-g
Created April 30, 2019 07:20
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 ar-g/821ce97ceaea92fda98dbad4c0a46f01 to your computer and use it in GitHub Desktop.
Save ar-g/821ce97ceaea92fda98dbad4c0a46f01 to your computer and use it in GitHub Desktop.
class PostDetailViewModel(private val postsOperations: PostsOperations): ViewModel() {
private val _postDetailUiModel =
MutableLiveData<Lce<PostDetailUiModel>>()
val postDetailUiModel: LiveData<Lce<PostDetailUiModel>>
get() = _postDetailUiModel
private var disposable: Disposable? = null
fun getPostDetail(postUiModel: PostUiModel) {
if (_postDetailUiModel.value == null) {
disposable = postsOperations.getPostDetail(postUiModel)
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe {
_postDetailUiModel.value = Lce.Content(
PostDetailUiModel(postUiModel.title, postUiModel.body, "", "")
)
_postDetailUiModel.value = Lce.Loading()
}
.subscribe(
{ postDetailUiModel -> _postDetailUiModel.value = Lce.Content(postDetailUiModel) },
{ throwable -> _postDetailUiModel.value = Lce.Error(throwable.message ?: "") }
)
}
}
override fun onCleared() {
disposable?.dispose()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment