diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt index 529728af7..8c80992e5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/AlbumDetailsActivity.kt @@ -88,7 +88,7 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C private lateinit var simpleSongAdapter: SimpleSongAdapter private lateinit var album: Album - private lateinit var songs: ArrayList + private lateinit var songs: List private var cab: MaterialCab? = null private val savedSortOrder: String @@ -193,17 +193,17 @@ class AlbumDetailsActivity : AbsSlidingMusicPanelActivity(), AlbumDetailsView, C albumText.text = String.format("%s • %s", album.artist, MusicUtil.getYearString(album.year)) } loadAlbumCover() - albumDetailsPresenter.albumSong(album.id) + albumDetailsPresenter.albumSongs(album.id) albumDetailsPresenter.loadMore(album.artistId) albumDetailsPresenter.aboutAlbum(album.artist, album.title) } - override fun songs(songs: ArrayList) { + override fun songs(songs: List) { this.songs = songs simpleSongAdapter.swapDataSet(songs) } - override fun moreAlbums(albums: ArrayList) { + override fun moreAlbums(albums: List) { moreTitle.show() moreRecyclerView.show() moreTitle.text = String.format(getString(R.string.label_more_from), album.artist) diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt index 23d0b8510..b9238f83e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/GenreDetailsActivity.kt @@ -129,7 +129,7 @@ class GenreDetailsActivity : AbsSlidingMusicPanelActivity(), CabHolder, GenreDet }) } - override fun songs(songs: ArrayList) { + override fun songs(songs: List) { songAdapter.swapDataSet(songs) } diff --git a/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt b/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt index f09afd9ab..ab22a62e1 100644 --- a/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt +++ b/app/src/main/java/code/name/monkey/retromusic/activities/PlaylistDetailActivity.kt @@ -238,7 +238,7 @@ class PlaylistDetailActivity : AbsSlidingMusicPanelActivity(), CabHolder, Playli emptyText.visibility = View.VISIBLE } - override fun songs(songs: ArrayList) { + override fun songs(songs: List) { adapter.swapDataSet(songs) } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt index ae5ed811c..2b888ed94 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/GenreAdapter.kt @@ -9,7 +9,6 @@ import code.name.monkey.retromusic.R import code.name.monkey.retromusic.adapter.base.MediaEntryViewHolder import code.name.monkey.retromusic.model.Genre import code.name.monkey.retromusic.util.NavigationUtil -import java.util.ArrayList import java.util.Locale /** @@ -18,11 +17,11 @@ import java.util.Locale class GenreAdapter( private val activity: Activity, - dataSet: ArrayList, + dataSet: List, private val mItemLayoutRes: Int ) : RecyclerView.Adapter() { - var dataSet = ArrayList() + var dataSet = listOf() private set init { @@ -48,7 +47,7 @@ class GenreAdapter( return dataSet.size } - fun swapDataSet(list: ArrayList) { + fun swapDataSet(list: List) { dataSet = list notifyDataSetChanged() } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt index 45b650c95..80e56669c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/album/HorizontalAlbumAdapter.kt @@ -11,11 +11,10 @@ import code.name.monkey.retromusic.interfaces.CabHolder import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.util.MusicUtil import com.bumptech.glide.Glide -import java.util.ArrayList class HorizontalAlbumAdapter( activity: AppCompatActivity, - dataSet: ArrayList, + dataSet: List, cabHolder: CabHolder? ) : AlbumAdapter( activity, dataSet, HorizontalAdapterHelper.LAYOUT_RES, cabHolder diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt index 6a710bda5..2b1ae68b4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/artist/ArtistAdapter.kt @@ -28,14 +28,14 @@ import java.util.ArrayList class ArtistAdapter( val activity: AppCompatActivity, - var dataSet: ArrayList, + var dataSet: List, var itemLayoutRes: Int, cabHolder: CabHolder? ) : AbsMultiSelectAdapter( activity, cabHolder, R.menu.menu_media_selection ), PopupTextProvider { - fun swapDataSet(dataSet: ArrayList) { + fun swapDataSet(dataSet: List) { this.dataSet = dataSet notifyDataSetChanged() } diff --git a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt index 28f11ab3d..3d76940de 100755 --- a/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/adapter/playlist/PlaylistAdapter.kt @@ -34,7 +34,7 @@ import java.util.ArrayList class PlaylistAdapter( private val activity: AppCompatActivity, - var dataSet: ArrayList, + var dataSet: List, private var itemLayoutRes: Int, cabHolder: CabHolder? ) : AbsMultiSelectAdapter( @@ -49,7 +49,7 @@ class PlaylistAdapter( setHasStableIds(true) } - fun swapDataSet(dataSet: ArrayList) { + fun swapDataSet(dataSet: List) { this.dataSet = dataSet notifyDataSetChanged() } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt index dad2f1e40..b002aefa2 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/ArtistsFragment.kt @@ -16,7 +16,7 @@ import javax.inject.Inject class ArtistsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment(), ArtistsView { - override fun artists(artists: ArrayList) { + override fun artists(artists: List) { adapter?.swapDataSet(artists) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt index 4b66fd106..fc43f05b4 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/GenresFragment.kt @@ -26,14 +26,12 @@ import code.name.monkey.retromusic.mvp.presenter.GenresPresenter import code.name.monkey.retromusic.mvp.presenter.GenresView import javax.inject.Inject - class GenresFragment : AbsLibraryPagerRecyclerViewFragment(), GenresView { - override fun genres(genres: ArrayList) { + override fun genres(genres: List) { adapter?.swapDataSet(genres) } override fun showEmptyView() { - } override fun createLayoutManager(): LinearLayoutManager { @@ -48,11 +46,9 @@ class GenresFragment : AbsLibraryPagerRecyclerViewFragment) { + override fun playlists(playlists: List) { adapter?.swapDataSet(playlists) } diff --git a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt index c6a22582a..08db8976f 100644 --- a/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt +++ b/app/src/main/java/code/name/monkey/retromusic/fragments/mainactivity/SongsFragment.kt @@ -49,7 +49,7 @@ class SongsFragment : AbsLibraryPagerRecyclerViewCustomGridSizeFragment) { + override fun songs(songs: List) { adapter?.swapDataSet(songs) } diff --git a/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt b/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt index 38d274f32..fd334a5b5 100644 --- a/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt +++ b/app/src/main/java/code/name/monkey/retromusic/loaders/AlbumLoader.kt @@ -31,7 +31,7 @@ import android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI as SONGS_URI * Created by hemanths on 11/08/17. */ -object AlbumLoader { +object AlbumLoader { fun getAllAlbums(context: Context): List { return makeAlbumCursor(context, null, null) diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt index d02480e6a..08b2fd70c 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/AlbumDetailsPresenter.kt @@ -14,9 +14,7 @@ package code.name.monkey.retromusic.mvp.presenter -import code.name.monkey.retromusic.App import code.name.monkey.retromusic.Result.Success -import code.name.monkey.retromusic.loaders.AlbumLoader import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.model.Song @@ -39,15 +37,13 @@ interface AlbumDetailsView { fun album(album: Album) - fun songs(songs: ArrayList) + fun songs(songs: List) fun complete() fun loadArtistImage(artist: Artist) - fun moreAlbums( - albums: ArrayList - ) + fun moreAlbums(albums: List) fun aboutAlbum(lastFmAlbum: LastFmAlbum) } @@ -55,7 +51,7 @@ interface AlbumDetailsView { interface AlbumDetailsPresenter : Presenter { fun loadAlbum(albumId: Long) - fun albumSong(albumId: Long) + fun albumSongs(albumId: Long) fun loadMore(artistId: Long) @@ -88,10 +84,6 @@ interface AlbumDetailsPresenter : Presenter { private fun showArtistImage(artist: Artist) { view?.loadArtistImage(artist) - - /* artist.albums?.filter { it.id != album.id }?.let { - if (it.isNotEmpty()) view?.moreAlbums(ArrayList(it)) - }*/ } override fun loadAlbum(albumId: Long) { @@ -106,11 +98,11 @@ interface AlbumDetailsPresenter : Presenter { } } - override fun albumSong(albumId: Long) { + override fun albumSongs(albumId: Long) { launch { - val songs = AlbumLoader.getSongsForAlbum(App.getContext(), albumId) - withContext(Dispatchers.Main) { - view.songs(songs) + when (val result = repository.albumSongsById(albumId)) { + is Success -> withContext(Dispatchers.Main) { view.songs(result.data) } + is Error -> withContext(Dispatchers.Main) {} } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt index 2f6ac1186..40f823417 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistDetailsPresenter.kt @@ -14,10 +14,7 @@ package code.name.monkey.retromusic.mvp.presenter -import code.name.monkey.retromusic.App -import code.name.monkey.retromusic.Result -import code.name.monkey.retromusic.loaders.AlbumLoader -import code.name.monkey.retromusic.loaders.ArtistLoader +import code.name.monkey.retromusic.Result.Success import code.name.monkey.retromusic.model.Album import code.name.monkey.retromusic.model.Artist import code.name.monkey.retromusic.model.Song @@ -77,12 +74,8 @@ interface ArtistDetailsPresenter : Presenter { override fun loadBiography(name: String, lang: String?, cache: String?) { launch { when (val result = repository.artistInfo(name, lang, cache)) { - is Result.Success -> withContext(Dispatchers.Main) { - view?.artistInfo(result.data) - } - is Result.Error -> withContext(Dispatchers.Main) { - - } + is Success -> withContext(Dispatchers.Main) { view?.artistInfo(result.data) } + is Error -> withContext(Dispatchers.Main) {} } } } @@ -90,31 +83,26 @@ interface ArtistDetailsPresenter : Presenter { override fun loadArtist(artistId: Long) { launch { when (val result = repository.artistById(artistId)) { - is Result.Success -> withContext(Dispatchers.Main) { - view?.artist(result.data) - - } - is Result.Error -> withContext(Dispatchers.Main) { - view?.showEmptyView() - } + is Success -> withContext(Dispatchers.Main) { view?.artist(result.data) } + is Error -> withContext(Dispatchers.Main) { view?.showEmptyView() } } } } override fun loadArtistSongs(artistId: Long) { launch { - val songs = ArtistLoader.getSongsForArtist(App.getContext(), artistId) - withContext(Dispatchers.Main) { - view.songs(songs) + when (val result = repository.artistSongsById(artistId)) { + is Success -> withContext(Dispatchers.Main) { view.songs(result.data) } + is Error -> withContext(Dispatchers.Main) {} } } } override fun loadArtistAlbums(artistId: Long) { launch { - val albums = AlbumLoader.getAlbumsForArtist(App.getContext(), artistId) - withContext(Dispatchers.Main) { - view.albums(albums) + when (val result = repository.artistAlbumsById(artistId)) { + is Success -> withContext(Dispatchers.Main) { view.albums(result.data) } + is Error -> withContext(Dispatchers.Main) {} } } } diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt index 7af0365e5..0ed1ed893 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/ArtistPresenter.kt @@ -20,12 +20,16 @@ import code.name.monkey.retromusic.mvp.BaseView import code.name.monkey.retromusic.mvp.Presenter import code.name.monkey.retromusic.mvp.PresenterImpl import code.name.monkey.retromusic.providers.interfaces.Repository -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject import kotlin.coroutines.CoroutineContext interface ArtistsView : BaseView { - fun artists(artists: ArrayList) + fun artists(artists: List) } interface ArtistsPresenter : Presenter { @@ -33,8 +37,9 @@ interface ArtistsPresenter : Presenter { fun loadArtists() class ArtistsPresenterImpl @Inject constructor( - private val repository: Repository + private val repository: Repository ) : PresenterImpl(), ArtistsPresenter, CoroutineScope { + private val job = Job() override val coroutineContext: CoroutineContext diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt index 4fe21bf7a..786c2e248 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenreDetailsPresenter.kt @@ -20,26 +20,30 @@ import code.name.monkey.retromusic.mvp.BaseView import code.name.monkey.retromusic.mvp.Presenter import code.name.monkey.retromusic.mvp.PresenterImpl import code.name.monkey.retromusic.providers.interfaces.Repository -import kotlinx.coroutines.* -import java.util.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject import kotlin.coroutines.CoroutineContext - /** * Created by hemanths on 20/08/17. */ interface GenreDetailsView : BaseView { - fun songs(songs: ArrayList) + + fun songs(songs: List) } interface GenreDetailsPresenter : Presenter { fun loadGenreSongs(genreId: Int) class GenreDetailsPresenterImpl @Inject constructor( - private val repository: Repository + private val repository: Repository ) : PresenterImpl(), GenreDetailsPresenter, CoroutineScope { + private val job = Job() override val coroutineContext: CoroutineContext @@ -50,7 +54,6 @@ interface GenreDetailsPresenter : Presenter { job.cancel() } - override fun loadGenreSongs(genreId: Int) { launch { when (val result = repository.getGenre(genreId)) { diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt index c929ab226..5ac89fb71 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/GenrePresenter.kt @@ -20,8 +20,11 @@ import code.name.monkey.retromusic.mvp.BaseView import code.name.monkey.retromusic.mvp.Presenter import code.name.monkey.retromusic.mvp.PresenterImpl import code.name.monkey.retromusic.providers.interfaces.Repository -import kotlinx.coroutines.* -import java.util.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject import kotlin.coroutines.CoroutineContext @@ -29,15 +32,17 @@ import kotlin.coroutines.CoroutineContext * @author Hemanth S (h4h13). */ interface GenresView : BaseView { - fun genres(genres: ArrayList) + + fun genres(genres: List) } interface GenresPresenter : Presenter { fun loadGenres() class GenresPresenterImpl @Inject constructor( - private val repository: Repository + private val repository: Repository ) : PresenterImpl(), GenresPresenter, CoroutineScope { + private val job = Job() override val coroutineContext: CoroutineContext diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt index e41deeb76..e25bddd7e 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistPresenter.kt @@ -16,19 +16,25 @@ package code.name.monkey.retromusic.mvp.presenter import code.name.monkey.retromusic.Result import code.name.monkey.retromusic.model.Playlist -import code.name.monkey.retromusic.mvp.* +import code.name.monkey.retromusic.mvp.BaseView +import code.name.monkey.retromusic.mvp.Presenter +import code.name.monkey.retromusic.mvp.PresenterImpl import code.name.monkey.retromusic.providers.interfaces.Repository -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject import kotlin.coroutines.CoroutineContext - /** * Created by hemanths on 19/08/17. */ interface PlaylistView : BaseView { - fun playlists(playlists: ArrayList) + + fun playlists(playlists: List) } interface PlaylistsPresenter : Presenter { @@ -36,7 +42,7 @@ interface PlaylistsPresenter : Presenter { fun playlists() class PlaylistsPresenterImpl @Inject constructor( - private val repository: Repository + private val repository: Repository ) : PresenterImpl(), PlaylistsPresenter, CoroutineScope { private val job = Job() diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt index 407c4b83a..8a7234814 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/PlaylistSongsPresenter.kt @@ -15,10 +15,17 @@ package code.name.monkey.retromusic.mvp.presenter import code.name.monkey.retromusic.Result -import code.name.monkey.retromusic.model.* -import code.name.monkey.retromusic.mvp.* +import code.name.monkey.retromusic.model.Playlist +import code.name.monkey.retromusic.model.Song +import code.name.monkey.retromusic.mvp.BaseView +import code.name.monkey.retromusic.mvp.Presenter +import code.name.monkey.retromusic.mvp.PresenterImpl import code.name.monkey.retromusic.providers.interfaces.Repository -import kotlinx.coroutines.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject import kotlin.coroutines.CoroutineContext @@ -26,14 +33,15 @@ import kotlin.coroutines.CoroutineContext * Created by hemanths on 20/08/17. */ interface PlaylistSongsView : BaseView { - fun songs(songs: ArrayList) + + fun songs(songs: List) } interface PlaylistSongsPresenter : Presenter { fun loadPlaylistSongs(playlist: Playlist) class PlaylistSongsPresenterImpl @Inject constructor( - private val repository: Repository + private val repository: Repository ) : PresenterImpl(), PlaylistSongsPresenter, CoroutineScope { private var job: Job = Job() diff --git a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt index 89ab6351d..5879de46b 100644 --- a/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt +++ b/app/src/main/java/code/name/monkey/retromusic/mvp/presenter/SongPresenter.kt @@ -16,10 +16,14 @@ package code.name.monkey.retromusic.mvp.presenter import code.name.monkey.retromusic.Result import code.name.monkey.retromusic.model.Song -import code.name.monkey.retromusic.mvp.* +import code.name.monkey.retromusic.mvp.Presenter +import code.name.monkey.retromusic.mvp.PresenterImpl import code.name.monkey.retromusic.providers.interfaces.Repository -import kotlinx.coroutines.* -import java.util.* +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import javax.inject.Inject import kotlin.coroutines.CoroutineContext @@ -27,36 +31,37 @@ import kotlin.coroutines.CoroutineContext * Created by hemanths on 10/08/17. */ interface SongView { - fun songs(songs: ArrayList) - fun showEmptyView() + fun songs(songs: List) + + fun showEmptyView() } interface SongPresenter : Presenter { - fun loadSongs() - class SongPresenterImpl @Inject constructor( - private val repository: Repository - ) : PresenterImpl(), SongPresenter, CoroutineScope { + fun loadSongs() + class SongPresenterImpl @Inject constructor( + private val repository: Repository + ) : PresenterImpl(), SongPresenter, CoroutineScope { - private var job: Job = Job() + private var job: Job = Job() - override val coroutineContext: CoroutineContext - get() = Dispatchers.IO + job + override val coroutineContext: CoroutineContext + get() = Dispatchers.IO + job - override fun loadSongs() { - launch { - when (val songs = repository.allSongs()) { - is Result.Success -> withContext(Dispatchers.Main) { view?.songs(songs.data) } - is Result.Error -> withContext(Dispatchers.Main) { view?.showEmptyView() } - } - } - } + override fun loadSongs() { + launch { + when (val songs = repository.allSongs()) { + is Result.Success -> withContext(Dispatchers.Main) { view?.songs(songs.data) } + is Result.Error -> withContext(Dispatchers.Main) { view?.showEmptyView() } + } + } + } - override fun detachView() { - super.detachView() - job.cancel(); - } - } + override fun detachView() { + super.detachView() + job.cancel(); + } + } } diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt index b59233191..69077ba24 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/RepositoryImpl.kt @@ -67,6 +67,33 @@ class RepositoryImpl @Inject constructor(private val context: Context) : Reposit } } + override suspend fun albumSongsById(albumId: Long): Result> { + return try { + val songs = AlbumLoader.getSongsForAlbum(context, albumId) + Success(songs) + } catch (e: Exception) { + Error(e) + } + } + + override suspend fun artistSongsById(artistId: Long): Result> { + return try { + val songs = ArtistLoader.getSongsForArtist(context, artistId) + Success(songs) + } catch (e: Exception) { + Error(e) + } + } + + override suspend fun artistAlbumsById(artistId: Long): Result> { + return try { + val albums = AlbumLoader.getAlbumsForArtist(context, artistId) + Success(albums) + } catch (e: Exception) { + Error(e) + } + } + override suspend fun allArtists(): Result> { return try { val artists = ArtistLoader.getAllArtists(context) diff --git a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt index 80437c9fc..d28d05e24 100644 --- a/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt +++ b/app/src/main/java/code/name/monkey/retromusic/providers/interfaces/Repository.kt @@ -34,19 +34,25 @@ interface Repository { suspend fun albumById(albumId: Long): Result - suspend fun allSongs(): Result> + suspend fun albumSongsById(albumId: Long): Result> - suspend fun allArtists(): Result> + suspend fun artistSongsById(artistId: Long): Result> - suspend fun allPlaylists(): Result> + suspend fun artistAlbumsById(artistId: Long): Result> - suspend fun allGenres(): Result> + suspend fun allSongs(): Result> + + suspend fun allArtists(): Result> + + suspend fun allPlaylists(): Result> + + suspend fun allGenres(): Result> suspend fun search(query: String?): Result> - suspend fun getPlaylistSongs(playlist: Playlist): Result> + suspend fun getPlaylistSongs(playlist: Playlist): Result> - suspend fun getGenre(genreId: Int): Result> + suspend fun getGenre(genreId: Int): Result> suspend fun recentArtists(): Result