Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.dicoding.picodiploma.footballleagueaplication.features.nextMatch
- import com.dicoding.picodiploma.footballleagueaplication.models.nextMatchModel.NextMatchItem
- import com.dicoding.picodiploma.footballleagueaplication.models.teamDetailModel.TeamDetailResponse
- import com.dicoding.picodiploma.footballleagueaplication.networks.RetrofitService.createService
- import rx.Observable
- import rx.android.schedulers.AndroidSchedulers
- import rx.schedulers.Schedulers
- class NextMatchPresenter(
- private val view: NextMatchView
- ) {
- fun getNextMatchData(idLeague: String?) {
- val listHome = mutableListOf<String>()
- val listAway = mutableListOf<String>()
- val listStadium = mutableListOf<String?>()
- val setDate = mutableSetOf<String>()
- val listNext = mutableListOf<NextMatchItem>()
- val apiService = createService()
- view.showLoading()
- apiService.getNextMatch(idLeague)
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .flatMap { Observable.from(it.events) }
- .flatMap {itNext ->
- Observable.zip(
- apiService.getTeamDetailFromServer(itNext.idHomeTeam),
- apiService.getTeamDetailFromServer(itNext.idAwayTeam)
- ) { homeTeam: TeamDetailResponse, awayTeam: TeamDetailResponse ->
- listHome.add(homeTeam.teams[0].strTeamBadge)
- listAway.add(awayTeam.teams[0].strTeamBadge)
- listNext.add(itNext)
- setDate.add(itNext.dateEvent)
- listStadium.add(homeTeam.teams[0].strStadium)
- }
- }.doOnCompleted {
- view.loadDataToView(listNext, listHome, listAway, listStadium, setDate )
- view.hideLoading()
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement