Initial commit retro music app
This commit is contained in:
parent
ab332473bc
commit
fe890632fd
932 changed files with 83126 additions and 0 deletions
|
@ -0,0 +1,12 @@
|
|||
package code.name.monkey.retromusic.mvp;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 09/08/17.
|
||||
*/
|
||||
|
||||
public interface BasePresenter<T> {
|
||||
|
||||
void subscribe();
|
||||
|
||||
void unsubscribe();
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package code.name.monkey.retromusic.mvp;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 09/08/17.
|
||||
*/
|
||||
|
||||
public interface BaseView<T> {
|
||||
void loading();
|
||||
|
||||
void showData(T list);
|
||||
|
||||
void showEmptyView();
|
||||
|
||||
void completed();
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package code.name.monkey.retromusic.mvp;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import code.name.monkey.retromusic.Injection;
|
||||
import code.name.monkey.retromusic.providers.interfaces.Repository;
|
||||
import code.name.monkey.retromusic.util.schedulers.BaseSchedulerProvider;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 16/08/17.
|
||||
*/
|
||||
|
||||
public class Presenter {
|
||||
@NonNull
|
||||
protected Repository repository;
|
||||
@NonNull
|
||||
protected CompositeDisposable disposable;
|
||||
@NonNull
|
||||
protected BaseSchedulerProvider schedulerProvider;
|
||||
|
||||
public Presenter() {
|
||||
this.repository = Injection.provideRepository();
|
||||
this.schedulerProvider = Injection.provideSchedulerProvider();
|
||||
this.disposable = new CompositeDisposable();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface AlbumContract {
|
||||
|
||||
interface AlbumView extends BaseView<ArrayList<Album>> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<AlbumView> {
|
||||
|
||||
void loadAlbums();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
public interface AlbumDetailsContract {
|
||||
|
||||
interface AlbumDetailsView extends BaseView<Album> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<AlbumDetailsView> {
|
||||
|
||||
void loadAlbumSongs(int albumId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 16/08/17.
|
||||
*/
|
||||
|
||||
public interface ArtistContract {
|
||||
interface ArtistView extends BaseView<ArrayList<Artist>> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<ArtistView> {
|
||||
void loadArtists();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public interface ArtistDetailContract {
|
||||
interface ArtistsDetailsView extends BaseView<Artist> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<ArtistsDetailsView> {
|
||||
void loadArtistById(int artistId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Hemanth S (h4h13).
|
||||
*/
|
||||
|
||||
public interface GenreContract {
|
||||
interface GenreView extends BaseView<ArrayList<Genre>> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<GenreView> {
|
||||
void loadGenre();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author Hemanth S (h4h13).
|
||||
*/
|
||||
|
||||
public interface GenreDetailsContract {
|
||||
interface GenreDetailsView extends BaseView<ArrayList<Song>> {
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<GenreDetailsView> {
|
||||
void loadGenre(int genreId);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.model.smartplaylist.AbsSmartPlaylist;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface HomeContract {
|
||||
|
||||
interface HomeView extends BaseView<ArrayList<Object>> {
|
||||
|
||||
void recentArtist(ArrayList<Artist> artists);
|
||||
|
||||
void recentAlbum(ArrayList<Album> albums);
|
||||
|
||||
void topArtists(ArrayList<Artist> artists);
|
||||
|
||||
void topAlbums(ArrayList<Album> albums);
|
||||
|
||||
void suggestions(ArrayList<Playlist> songs);
|
||||
|
||||
void geners(ArrayList<Genre> songs);
|
||||
}
|
||||
|
||||
interface HomePresenter extends BasePresenter<HomeView> {
|
||||
|
||||
void loadRecentAlbums();
|
||||
|
||||
void loadTopAlbums();
|
||||
|
||||
void loadRecentArtists();
|
||||
|
||||
void loadTopArtists();
|
||||
|
||||
void loadSuggestions();
|
||||
|
||||
void loadGenres();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 19/08/17.
|
||||
*/
|
||||
|
||||
public interface PlaylistContract {
|
||||
interface PlaylistView extends BaseView<ArrayList<Playlist> > {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<PlaylistView> {
|
||||
void loadPlaylists();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public interface PlaylistSongsContract {
|
||||
interface PlaylistSongsView extends BaseView<ArrayList<Song>> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<PlaylistSongsView> {
|
||||
void loadSongs(Playlist playlist);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public interface SearchContract {
|
||||
interface SearchView extends BaseView<ArrayList<Object>> {
|
||||
|
||||
}
|
||||
|
||||
interface SearchPresenter extends BasePresenter<SearchView> {
|
||||
void search(String query);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package code.name.monkey.retromusic.mvp.contract;
|
||||
|
||||
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.mvp.BasePresenter;
|
||||
import code.name.monkey.retromusic.mvp.BaseView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 10/08/17.
|
||||
*/
|
||||
|
||||
public interface SongContract {
|
||||
|
||||
interface SongView extends BaseView<ArrayList<Song>> {
|
||||
|
||||
}
|
||||
|
||||
interface Presenter extends BasePresenter<SongView> {
|
||||
void loadSongs();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.AlbumDetailsContract;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public class AlbumDetailsPresenter extends Presenter implements AlbumDetailsContract.Presenter {
|
||||
|
||||
@NonNull
|
||||
private final int albumId;
|
||||
@NonNull
|
||||
private AlbumDetailsContract.AlbumDetailsView view;
|
||||
|
||||
public AlbumDetailsPresenter(@NonNull AlbumDetailsContract.AlbumDetailsView view, int albumId) {
|
||||
|
||||
this.view = view;
|
||||
this.albumId = albumId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadAlbumSongs(albumId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadAlbumSongs(int albumId) {
|
||||
disposable.add(repository.getAlbum(albumId)
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(this::showAlbum,
|
||||
throwable -> view.showEmptyView(),
|
||||
() -> view.completed()));
|
||||
}
|
||||
|
||||
private void showAlbum(Album album) {
|
||||
if (album != null) {
|
||||
view.showData(album);
|
||||
} else {
|
||||
view.showEmptyView();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import code.name.monkey.retromusic.model.Album;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.AlbumContract;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 12/08/17.
|
||||
*/
|
||||
|
||||
public class AlbumPresenter extends Presenter implements AlbumContract.Presenter {
|
||||
@NonNull
|
||||
private AlbumContract.AlbumView view;
|
||||
|
||||
|
||||
public AlbumPresenter(@NonNull AlbumContract.AlbumView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadAlbums();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
private void showList(@NonNull ArrayList<Album> albums) {
|
||||
view.showData(albums);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadAlbums() {
|
||||
disposable.add(repository.getAllAlbums()
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(this::showList,
|
||||
throwable -> view.showEmptyView(),
|
||||
() -> view.completed()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.ArtistDetailContract;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public class ArtistDetailsPresenter extends Presenter implements ArtistDetailContract.Presenter {
|
||||
|
||||
private final int artistId;
|
||||
@NonNull
|
||||
private final ArtistDetailContract.ArtistsDetailsView view;
|
||||
|
||||
public ArtistDetailsPresenter(@NonNull ArtistDetailContract.ArtistsDetailsView view,
|
||||
int artistId) {
|
||||
this.view = view;
|
||||
this.artistId = artistId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadArtistById(artistId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadArtistById(int artistId) {
|
||||
disposable.add(repository.getArtistById(artistId)
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(this::showArtist,
|
||||
throwable -> view.showEmptyView(),
|
||||
() -> view.completed()));
|
||||
}
|
||||
|
||||
private void showArtist(Artist album) {
|
||||
if (album != null) {
|
||||
view.showData(album);
|
||||
} else {
|
||||
view.showEmptyView();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import code.name.monkey.retromusic.model.Artist;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.ArtistContract;
|
||||
|
||||
public class ArtistPresenter extends Presenter implements ArtistContract.Presenter {
|
||||
@NonNull
|
||||
private ArtistContract.ArtistView mView;
|
||||
|
||||
public ArtistPresenter(@NonNull ArtistContract.ArtistView view) {
|
||||
mView = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadArtists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
private void showList(@NonNull ArrayList<Artist> songs) {
|
||||
if (songs.isEmpty()) {
|
||||
mView.showEmptyView();
|
||||
} else {
|
||||
mView.showData(songs);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadArtists() {
|
||||
disposable.add(repository.getAllArtists()
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> mView.loading())
|
||||
.subscribe(this::showList,
|
||||
throwable -> mView.showEmptyView(),
|
||||
() -> mView.completed()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.GenreDetailsContract;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public class GenreDetailsPresenter extends Presenter
|
||||
implements GenreDetailsContract.Presenter {
|
||||
private final int genreId;
|
||||
@NonNull
|
||||
private GenreDetailsContract.GenreDetailsView view;
|
||||
|
||||
public GenreDetailsPresenter(@NonNull GenreDetailsContract.GenreDetailsView view,
|
||||
int genreId) {
|
||||
this.view = view;
|
||||
this.genreId = genreId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadGenre(genreId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadGenre(int genreId) {
|
||||
disposable.add(repository.getGenre(genreId)
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(this::showGenre,
|
||||
throwable -> view.showEmptyView(),
|
||||
() -> view.completed()));
|
||||
}
|
||||
|
||||
private void showGenre(ArrayList<Song> songs) {
|
||||
if (songs != null) {
|
||||
view.showData(songs);
|
||||
} else {
|
||||
view.showEmptyView();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import code.name.monkey.retromusic.model.Genre;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.GenreContract;
|
||||
|
||||
/**
|
||||
* @author Hemanth S (h4h13).
|
||||
*/
|
||||
|
||||
public class GenrePresenter extends Presenter
|
||||
implements GenreContract.Presenter {
|
||||
@NonNull
|
||||
private GenreContract.GenreView view;
|
||||
|
||||
public GenrePresenter(
|
||||
@NonNull GenreContract.GenreView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadGenre();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadGenre() {
|
||||
disposable.add(repository.getAllGenres()
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(this::showList,
|
||||
throwable -> view.showEmptyView(),
|
||||
() -> view.completed()));
|
||||
}
|
||||
|
||||
private void showList(@NonNull ArrayList<Genre> genres) {
|
||||
if (genres.isEmpty()) {
|
||||
view.showEmptyView();
|
||||
} else {
|
||||
view.showData(genres);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,128 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import code.name.monkey.retromusic.RetroApplication;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.HomeContract;
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil;
|
||||
|
||||
public class HomePresenter extends Presenter implements HomeContract.HomePresenter {
|
||||
|
||||
@NonNull
|
||||
private HomeContract.HomeView view;
|
||||
|
||||
public HomePresenter(@NonNull HomeContract.HomeView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
|
||||
loadRecentAlbums();
|
||||
loadRecentArtists();
|
||||
|
||||
loadTopAlbums();
|
||||
loadTopArtists();
|
||||
|
||||
loadSuggestions();
|
||||
|
||||
if (PreferenceUtil.getInstance(RetroApplication.getInstance()).isGenreShown()) {
|
||||
loadGenres();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
public void loadPlaylists() {
|
||||
disposable.add(repository.getAllPlaylists()
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.subscribe(playlists -> {
|
||||
if (!playlists.isEmpty()) {
|
||||
view.suggestions(playlists);
|
||||
}
|
||||
},
|
||||
throwable -> view.showEmptyView(), () -> view.completed()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadRecentAlbums() {
|
||||
disposable.add(repository.getRecentAlbums()
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(artists -> {
|
||||
if (!artists.isEmpty()) {
|
||||
view.recentAlbum(artists);
|
||||
}
|
||||
},
|
||||
throwable -> view.showEmptyView(), () -> view.completed()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadTopAlbums() {
|
||||
disposable.add(repository.getTopAlbums()
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(artists -> {
|
||||
if (!artists.isEmpty()) {
|
||||
view.topAlbums(artists);
|
||||
}
|
||||
},
|
||||
throwable -> view.showEmptyView(), () -> view.completed()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadRecentArtists() {
|
||||
disposable.add(repository.getRecentArtists()
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(artists -> {
|
||||
if (!artists.isEmpty()) {
|
||||
view.recentArtist(artists);
|
||||
}
|
||||
},
|
||||
throwable -> view.showEmptyView(), () -> view.completed()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadTopArtists() {
|
||||
disposable.add(repository.getTopArtists()
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(artists -> {
|
||||
if (!artists.isEmpty()) {
|
||||
view.topArtists(artists);
|
||||
}
|
||||
},
|
||||
throwable -> view.showEmptyView(), () -> view.completed()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadSuggestions() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadGenres() {
|
||||
disposable.add(repository.getAllGenres()
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(genres -> {
|
||||
if (!genres.isEmpty()) {
|
||||
view.geners(genres);
|
||||
}
|
||||
},
|
||||
throwable -> view.showEmptyView(), () -> view.completed()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.PlaylistContract;
|
||||
|
||||
|
||||
/**
|
||||
* Created by hemanths on 19/08/17.
|
||||
*/
|
||||
|
||||
public class PlaylistPresenter extends Presenter
|
||||
implements PlaylistContract.Presenter {
|
||||
@NonNull
|
||||
private PlaylistContract.PlaylistView mView;
|
||||
|
||||
public PlaylistPresenter(@NonNull PlaylistContract.PlaylistView view) {
|
||||
|
||||
mView = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadPlaylists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadPlaylists() {
|
||||
disposable.add(repository.getAllPlaylists()
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> mView.loading())
|
||||
.subscribe(this::showList,
|
||||
throwable -> mView.showEmptyView(),
|
||||
() -> mView.completed()));
|
||||
}
|
||||
|
||||
private void showList(@NonNull ArrayList<Playlist> songs) {
|
||||
if (songs.isEmpty()) {
|
||||
mView.showEmptyView();
|
||||
} else {
|
||||
mView.showData(songs);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import code.name.monkey.retromusic.model.Playlist;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.PlaylistSongsContract;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public class PlaylistSongsPresenter extends Presenter
|
||||
implements PlaylistSongsContract.Presenter {
|
||||
@NonNull
|
||||
private PlaylistSongsContract.PlaylistSongsView mView;
|
||||
@NonNull
|
||||
private Playlist mPlaylist;
|
||||
|
||||
public PlaylistSongsPresenter(@NonNull PlaylistSongsContract.PlaylistSongsView view,
|
||||
@NonNull Playlist playlist) {
|
||||
|
||||
mView = view;
|
||||
mPlaylist = playlist;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadSongs(mPlaylist);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadSongs(Playlist playlist) {
|
||||
disposable.add(repository.getPlaylistSongs(playlist)
|
||||
.subscribeOn(schedulerProvider.io())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> mView.loading())
|
||||
.subscribe(songs -> mView.showData(songs),
|
||||
throwable -> mView.showEmptyView(),
|
||||
() -> mView.completed()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.SearchContract;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 20/08/17.
|
||||
*/
|
||||
|
||||
public class SearchPresenter extends Presenter implements SearchContract.SearchPresenter {
|
||||
@NonNull
|
||||
private SearchContract.SearchView mView;
|
||||
|
||||
public SearchPresenter(@NonNull SearchContract.SearchView view) {
|
||||
mView = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
search("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
private void showList(@NonNull ArrayList<Object> albums) {
|
||||
if (albums.isEmpty()) {
|
||||
mView.showEmptyView();
|
||||
} else {
|
||||
mView.showData(albums);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void search(String query) {
|
||||
disposable.add(repository.search(query)
|
||||
.debounce(500, TimeUnit.MILLISECONDS)
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> mView.loading())
|
||||
.subscribe(this::showList,
|
||||
throwable -> mView.showEmptyView(),
|
||||
() -> mView.completed()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
package code.name.monkey.retromusic.mvp.presenter;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import code.name.monkey.retromusic.model.Song;
|
||||
import code.name.monkey.retromusic.mvp.Presenter;
|
||||
import code.name.monkey.retromusic.mvp.contract.SongContract;
|
||||
|
||||
/**
|
||||
* Created by hemanths on 10/08/17.
|
||||
*/
|
||||
|
||||
public class SongPresenter extends Presenter implements SongContract.Presenter {
|
||||
|
||||
@NonNull
|
||||
private SongContract.SongView view;
|
||||
|
||||
|
||||
public SongPresenter(@NonNull SongContract.SongView view) {
|
||||
this.view = view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadSongs() {
|
||||
disposable.add(repository.getAllSongs()
|
||||
.subscribeOn(schedulerProvider.computation())
|
||||
.observeOn(schedulerProvider.ui())
|
||||
.doOnSubscribe(disposable1 -> view.loading())
|
||||
.subscribe(this::showList,
|
||||
throwable -> view.showEmptyView(),
|
||||
() -> view.completed()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void subscribe() {
|
||||
loadSongs();
|
||||
}
|
||||
|
||||
private void showList(@NonNull ArrayList<Song> songs) {
|
||||
if (songs.isEmpty()) {
|
||||
view.showEmptyView();
|
||||
} else {
|
||||
view.showData(songs);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsubscribe() {
|
||||
disposable.clear();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue