Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.wildan.moviecatalogue.viewmodel
- import android.arch.lifecycle.ViewModel
- import android.arch.lifecycle.MutableLiveData
- import com.wildan.moviecatalogue.model.movie.MovieResult
- import android.arch.lifecycle.LiveData
- import android.content.Context
- import com.wildan.moviecatalogue.model.movie.MovieResponse
- import com.wildan.moviecatalogue.network.ConnectivityStatus
- import com.wildan.moviecatalogue.network.NetworkError
- import com.wildan.moviecatalogue.repository.MovieRepositoryImp
- import com.wildan.moviecatalogue.view.MovieView
- import io.reactivex.android.schedulers.AndroidSchedulers
- import io.reactivex.disposables.CompositeDisposable
- import io.reactivex.schedulers.Schedulers
- import io.reactivex.subscribers.ResourceSubscriber
- import retrofit2.HttpException
- import java.net.SocketTimeoutException
- class MovieViewModel : ViewModel(), MovieView.ViewModel {
- private val listMovies = MutableLiveData<ArrayList<MovieResult>>()
- private val compositeDisposable = CompositeDisposable()
- fun getMovies(): LiveData<ArrayList<MovieResult>> {
- return listMovies
- }
- override fun setMovie(
- apiKey: String,
- page: Int,
- language: String,
- view: MovieView.View,
- context: Context,
- movie: MovieRepositoryImp
- ) {
- view.showProgressBar()
- compositeDisposable.add(
- movie.getMovieData(apiKey, page, language)
- .observeOn(AndroidSchedulers.mainThread())
- .subscribeOn(Schedulers.io())
- .subscribeWith(object : ResourceSubscriber<MovieResponse>() {
- override fun onComplete() {
- view.hideProgressBar()
- }
- override fun onNext(t: MovieResponse?) {
- t?.let { view.getMovieData(it) }
- listMovies.postValue(t?.movieResult)
- }
- override fun onError(t: Throwable?) {
- view.hideProgressBar()
- if (ConnectivityStatus.isConnected(context)) {
- when (t) {
- is HttpException -> // non 200 error codes
- NetworkError.handleError(t, context)
- is SocketTimeoutException -> // connection errors
- view.noInternetConnection("Connection Timeout!")
- }
- } else {
- view.noInternetConnection("Tidak Terhubung Dengan Internet!")
- }
- }
- })
- )
- }
- override fun onDestroy() {
- compositeDisposable.dispose()
- }
- }
Add Comment
Please, Sign In to add comment