package code.name.monkey.retromusic.mvp.presenter import code.name.monkey.retromusic.R import code.name.monkey.retromusic.model.* import code.name.monkey.retromusic.mvp.Presenter import code.name.monkey.retromusic.mvp.contract.HomeContract import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.GENRES import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.PLAYLISTS import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.RECENT_ALBUMS import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.RECENT_ARTISTS import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.SUGGESTIONS import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.TOP_ALBUMS import code.name.monkey.retromusic.ui.adapter.HomeAdapter.Companion.TOP_ARTISTS import code.name.monkey.retromusic.util.PreferenceUtil import io.reactivex.Observable import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.Disposable import io.reactivex.functions.Function7 operator fun CompositeDisposable.plusAssign(disposable: Disposable) { add(disposable) } class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), HomeContract.HomePresenter { override fun homeSections() { disposable += Observable.combineLatest(repository.suggestionSongs, repository.recentAlbums, repository.topAlbums, repository.recentArtists, repository.topArtists, repository.allGenres, repository.favoritePlaylist, Function7, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList, ArrayList, List> { suggestions: ArrayList, recentAlbums: ArrayList, topAlbums: ArrayList, recentArtists: ArrayList, topArtists: ArrayList, genres: ArrayList, favoritePlaylist: ArrayList -> val homes: ArrayList = ArrayList() if (suggestions.isNotEmpty()) homes.add(Home(R.string.suggestion_songs, 0, suggestions, SUGGESTIONS)) if (recentArtists.isNotEmpty()) homes.add(Home(R.string.recent_artists, 0, recentArtists, RECENT_ARTISTS)) if (recentAlbums.isNotEmpty()) homes.add(Home(R.string.recent_albums, 0, recentAlbums, RECENT_ALBUMS)) if (topArtists.isNotEmpty()) homes.add(Home(R.string.top_artists, 0, topArtists, TOP_ARTISTS)) if (topAlbums.isNotEmpty()) homes.add(Home(R.string.top_albums, 0, topAlbums, TOP_ALBUMS)) if (favoritePlaylist.isNotEmpty()) homes.add(Home(R.string.favorites, 0, favoritePlaylist, PLAYLISTS)) if (genres.isNotEmpty() && PreferenceUtil.getInstance().isGenreShown) homes.add(Home(R.string.genres, 0, genres, GENRES)) homes }).subscribe { homes -> if (homes.isNotEmpty()) { view.showData(homes as ArrayList) } } } override fun subscribe() { homeSections() } override fun unsubscribe() { disposable.dispose() } }