Removed butter knife

This commit is contained in:
h4h13 2018-12-06 14:22:57 +05:30
parent d5f63b91ac
commit 63e3276098
194 changed files with 5984 additions and 7491 deletions

View file

@ -1,12 +0,0 @@
package code.name.monkey.retromusic.mvp;
/**
* Created by hemanths on 09/08/17.
*/
public interface BasePresenter<T> {
void subscribe();
void unsubscribe();
}

View file

@ -0,0 +1,12 @@
package code.name.monkey.retromusic.mvp
/**
* Created by hemanths on 09/08/17.
*/
interface BasePresenter<T> {
fun subscribe()
fun unsubscribe()
}

View file

@ -1,15 +0,0 @@
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();
}

View file

@ -0,0 +1,15 @@
package code.name.monkey.retromusic.mvp
/**
* Created by hemanths on 09/08/17.
*/
interface BaseView<T> {
fun loading()
fun showData(list: T)
fun showEmptyView()
fun completed()
}

View file

@ -1,27 +0,0 @@
package code.name.monkey.retromusic.mvp;
import androidx.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.INSTANCE.provideRepository();
this.schedulerProvider = Injection.INSTANCE.provideSchedulerProvider();
this.disposable = new CompositeDisposable();
}
}

View file

@ -0,0 +1,16 @@
package code.name.monkey.retromusic.mvp
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.
*/
open class Presenter {
protected var repository: Repository = Injection.provideRepository()
protected var disposable: CompositeDisposable = CompositeDisposable()
protected var schedulerProvider: BaseSchedulerProvider = Injection.provideSchedulerProvider()
}

View file

@ -1,19 +0,0 @@
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();
}
}

View file

@ -0,0 +1,17 @@
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
interface AlbumContract {
interface AlbumView : BaseView<ArrayList<Album>>
interface Presenter : BasePresenter<AlbumView> {
fun loadAlbums()
}
}

View file

@ -1,18 +0,0 @@
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);
}
}

View file

@ -0,0 +1,16 @@
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
interface AlbumDetailsContract {
interface AlbumDetailsView : BaseView<Album>
interface Presenter : BasePresenter<AlbumDetailsView> {
fun loadAlbumSongs(albumId: Int)
}
}

View file

@ -1,23 +0,0 @@
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();
}
}

View file

@ -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
import java.util.ArrayList
/**
* Created by hemanths on 16/08/17.
*/
interface ArtistContract {
interface ArtistView : BaseView<ArrayList<Artist>>
interface Presenter : BasePresenter<ArtistView> {
fun loadArtists()
}
}

View file

@ -1,21 +0,0 @@
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();
}
}

View file

@ -0,0 +1,19 @@
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.
*/
interface ArtistDetailContract {
interface ArtistsDetailsView : BaseView<Artist>
interface Presenter : BasePresenter<ArtistsDetailsView> {
fun loadArtistById()
}
}

View file

@ -1,21 +0,0 @@
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();
}
}

View file

@ -0,0 +1,19 @@
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).
*/
interface GenreContract {
interface GenreView : BaseView<ArrayList<Genre>>
interface Presenter : BasePresenter<GenreView> {
fun loadGenre()
}
}

View file

@ -1,20 +0,0 @@
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);
}
}

View file

@ -0,0 +1,19 @@
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).
*/
interface GenreDetailsContract {
interface GenreDetailsView : BaseView<ArrayList<Song>>
interface Presenter : BasePresenter<GenreDetailsView> {
fun loadGenre(genreId: Int)
}
}

View file

@ -1,47 +0,0 @@
package code.name.monkey.retromusic.mvp.contract;
import java.util.ArrayList;
import code.name.monkey.retromusic.model.AbsCustomPlaylist;
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.Song;
import code.name.monkey.retromusic.mvp.BasePresenter;
import code.name.monkey.retromusic.mvp.BaseView;
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<Song> songs);
void playlists(ArrayList<Playlist> playlists);
void geners(ArrayList<Genre> songs);
}
interface HomePresenter extends BasePresenter<HomeView> {
void loadRecentAlbums();
void loadTopAlbums();
void loadRecentArtists();
void loadTopArtists();
void loadSuggestions();
void loadGenres();
}
}

View file

@ -0,0 +1,47 @@
package code.name.monkey.retromusic.mvp.contract
import java.util.ArrayList
import code.name.monkey.retromusic.model.AbsCustomPlaylist
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.Song
import code.name.monkey.retromusic.mvp.BasePresenter
import code.name.monkey.retromusic.mvp.BaseView
interface HomeContract {
interface HomeView : BaseView<ArrayList<Any>> {
fun recentArtist(artists: ArrayList<Artist>)
fun recentAlbum(albums: ArrayList<Album>)
fun topArtists(artists: ArrayList<Artist>)
fun topAlbums(albums: ArrayList<Album>)
fun suggestions(songs: ArrayList<Song>)
fun playlists(playlists: ArrayList<Playlist>)
fun geners(songs: ArrayList<Genre>)
}
interface HomePresenter : BasePresenter<HomeView> {
fun loadRecentAlbums()
fun loadTopAlbums()
fun loadRecentArtists()
fun loadTopArtists()
fun loadSuggestions()
fun loadGenres()
}
}

View file

@ -1,21 +0,0 @@
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();
}
}

View file

@ -0,0 +1,19 @@
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.
*/
interface PlaylistContract {
interface PlaylistView : BaseView<ArrayList<Playlist>>
interface Presenter : BasePresenter<PlaylistView> {
fun loadPlaylists()
}
}

View file

@ -1,23 +0,0 @@
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);
}
}

View file

@ -0,0 +1,21 @@
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.
*/
interface PlaylistSongsContract {
interface PlaylistSongsView : BaseView<ArrayList<Song>>
interface Presenter : BasePresenter<PlaylistSongsView> {
fun loadSongs(playlist: Playlist)
}
}

View file

@ -1,21 +0,0 @@
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);
}
}

View file

@ -0,0 +1,19 @@
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.
*/
interface SearchContract {
interface SearchView : BaseView<ArrayList<Any>>
interface SearchPresenter : BasePresenter<SearchView> {
fun search(query: String)
}
}

View file

@ -1,24 +0,0 @@
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();
}
}

View file

@ -0,0 +1,22 @@
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.
*/
interface SongContract {
interface SongView : BaseView<ArrayList<Song>>
interface Presenter : BasePresenter<SongView> {
fun loadSongs()
}
}

View file

@ -1,54 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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();
}
}
}

View file

@ -0,0 +1,39 @@
package code.name.monkey.retromusic.mvp.presenter
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.
*/
class AlbumDetailsPresenter(private val view: AlbumDetailsContract.AlbumDetailsView, private val albumId: Int) : Presenter(), AlbumDetailsContract.Presenter {
override fun subscribe() {
loadAlbumSongs(albumId)
}
override fun unsubscribe() {
disposable.clear()
}
override fun loadAlbumSongs(albumId: Int) {
disposable.add(repository.getAlbum(albumId)
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showAlbum(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
private fun showAlbum(album: Album?) {
if (album != null) {
view.showData(album)
} else {
view.showEmptyView()
}
}
}

View file

@ -1,49 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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()));
}
}

View file

@ -0,0 +1,36 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.model.Album
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.AlbumContract
import java.util.*
/**
* Created by hemanths on 12/08/17.
*/
class AlbumPresenter(private val view: AlbumContract.AlbumView) : Presenter(), AlbumContract.Presenter {
override fun subscribe() {
loadAlbums()
}
override fun unsubscribe() {
disposable.clear()
}
private fun showList(albums: ArrayList<Album>) {
view.showData(albums)
}
override fun loadAlbums() {
disposable.add(repository.allAlbums
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showList(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
}

View file

@ -1,56 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import android.os.Bundle;
import androidx.annotation.NonNull;
import code.name.monkey.retromusic.model.Artist;
import code.name.monkey.retromusic.mvp.Presenter;
import code.name.monkey.retromusic.mvp.contract.ArtistDetailContract;
import code.name.monkey.retromusic.ui.activities.ArtistDetailActivity;
/**
* Created by hemanths on 20/08/17.
*/
public class ArtistDetailsPresenter extends Presenter implements ArtistDetailContract.Presenter {
@NonNull
private final ArtistDetailContract.ArtistsDetailsView view;
private Bundle bundle;
public ArtistDetailsPresenter(@NonNull ArtistDetailContract.ArtistsDetailsView view,
Bundle artistId) {
this.view = view;
this.bundle = artistId;
}
@Override
public void subscribe() {
loadArtistById();
}
@Override
public void unsubscribe() {
disposable.clear();
}
@Override
public void loadArtistById() {
disposable.add(repository.getArtistById(bundle.getInt(ArtistDetailActivity.EXTRA_ARTIST_ID))
.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();
}
}
}

View file

@ -0,0 +1,42 @@
package code.name.monkey.retromusic.mvp.presenter
import android.os.Bundle
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.ArtistDetailContract
import code.name.monkey.retromusic.ui.activities.ArtistDetailActivity
/**
* Created by hemanths on 20/08/17.
*/
class ArtistDetailsPresenter(private val view: ArtistDetailContract.ArtistsDetailsView,
private val bundle: Bundle) : Presenter(), ArtistDetailContract.Presenter {
override fun subscribe() {
loadArtistById()
}
override fun unsubscribe() {
disposable.clear()
}
override fun loadArtistById() {
disposable.add(repository.getArtistById(bundle.getInt(ArtistDetailActivity.EXTRA_ARTIST_ID).toLong())
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showArtist(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
private fun showArtist(album: Artist?) {
if (album != null) {
view.showData(album)
} else {
view.showEmptyView()
}
}
}

View file

@ -1,47 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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()));
}
}

View file

@ -0,0 +1,35 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.model.Artist
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.ArtistContract
import java.util.*
class ArtistPresenter(private val mView: ArtistContract.ArtistView) : Presenter(), ArtistContract.Presenter {
override fun subscribe() {
loadArtists()
}
override fun unsubscribe() {
disposable.clear()
}
private fun showList(songs: ArrayList<Artist>) {
if (songs.isEmpty()) {
mView.showEmptyView()
} else {
mView.showData(songs)
}
}
override fun loadArtists() {
disposable.add(repository.allArtists
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { mView.loading() }
.subscribe({ this.showList(it) },
{ mView.showEmptyView() },
{ mView.completed() }))
}
}

View file

@ -1,56 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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();
}
}
}

View file

@ -0,0 +1,41 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.GenreDetailsContract
import java.util.*
/**
* Created by hemanths on 20/08/17.
*/
class GenreDetailsPresenter(private val view: GenreDetailsContract.GenreDetailsView,
private val genreId: Int) : Presenter(), GenreDetailsContract.Presenter {
override fun subscribe() {
loadGenre(genreId)
}
override fun unsubscribe() {
disposable.clear()
}
override fun loadGenre(genreId: Int) {
disposable.add(repository.getGenre(genreId)
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showGenre(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
private fun showGenre(songs: ArrayList<Song>?) {
if (songs != null) {
view.showData(songs)
} else {
view.showEmptyView()
}
}
}

View file

@ -1,53 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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);
}
}
}

View file

@ -0,0 +1,40 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.model.Genre
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.GenreContract
import java.util.*
/**
* @author Hemanth S (h4h13).
*/
class GenrePresenter(
private val view: GenreContract.GenreView) : Presenter(), GenreContract.Presenter {
override fun subscribe() {
loadGenre()
}
override fun unsubscribe() {
disposable.clear()
}
override fun loadGenre() {
disposable.add(repository.allGenres
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showList(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
private fun showList(genres: ArrayList<Genre>) {
if (genres.isEmpty()) {
view.showEmptyView()
} else {
view.showData(genres)
}
}
}

View file

@ -1,126 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.annotation.NonNull;
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().isGenreShown()) loadGenres();
}
@Override
public void unsubscribe() {
disposable.clear();
}
public void loadPlaylists() {
disposable.add(repository.getAllPlaylists()
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.subscribe(playlist -> {
if (!playlist.isEmpty()) {
view.playlists(playlist);
}
},
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() {
disposable.add(repository.getSuggestionSongs()
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe(disposable1 -> view.loading())
.subscribe(songs -> view.suggestions(songs), throwable -> view.showEmptyView(), () -> view.completed()));
}
@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()));
}
}

View file

@ -0,0 +1,105 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.HomeContract
import code.name.monkey.retromusic.util.PreferenceUtil
class HomePresenter(private val view: HomeContract.HomeView) : Presenter(), HomeContract.HomePresenter {
override fun subscribe() {
loadRecentAlbums()
loadRecentArtists()
loadTopAlbums()
loadTopArtists()
loadSuggestions()
if (PreferenceUtil.getInstance().isGenreShown) loadGenres()
}
override fun unsubscribe() {
disposable.clear()
}
fun loadPlaylists() {
disposable.add(repository.allPlaylists
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.subscribe({ playlist ->
if (!playlist.isEmpty()) {
view.playlists(playlist)
}
}, { view.showEmptyView() }, { view.completed() }))
}
override fun loadRecentAlbums() {
disposable.add(repository.recentAlbums
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe { view.loading() }
.subscribe({ artists ->
if (!artists.isEmpty()) {
view.recentAlbum(artists)
}
}, { view.showEmptyView() }, { view.completed() }))
}
override fun loadTopAlbums() {
disposable.add(repository.topAlbums
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe { view.loading() }
.subscribe({ artists ->
if (!artists.isEmpty()) {
view.topAlbums(artists)
}
}, { view.showEmptyView() }, { view.completed() }))
}
override fun loadRecentArtists() {
disposable.add(repository.recentArtists
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe { view.loading() }
.subscribe({ artists ->
if (!artists.isEmpty()) {
view.recentArtist(artists)
}
}, { view.showEmptyView() }, { view.completed() }))
}
override fun loadTopArtists() {
disposable.add(repository.topArtists
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe { view.loading() }
.subscribe({ artists ->
if (!artists.isEmpty()) {
view.topArtists(artists)
}
}, { view.showEmptyView() }, { view.completed() }))
}
override fun loadSuggestions() {
disposable.add(repository.suggestionSongs
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe { view.loading() }
.subscribe({ songs -> view.suggestions(songs) }, { view.showEmptyView() }, { view.completed() }))
}
override fun loadGenres() {
disposable.add(repository.allGenres
.observeOn(schedulerProvider.ui())
.subscribeOn(schedulerProvider.io())
.doOnSubscribe { view.loading() }
.subscribe({ genres ->
if (!genres.isEmpty()) {
view.geners(genres)
}
},
{ view.showEmptyView() }, { view.completed() }))
}
}

View file

@ -1,54 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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);
}
}
}

View file

@ -0,0 +1,40 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.model.Playlist
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.PlaylistContract
import java.util.*
/**
* Created by hemanths on 19/08/17.
*/
class PlaylistPresenter(private val view: PlaylistContract.PlaylistView) : Presenter(), PlaylistContract.Presenter {
override fun subscribe() {
loadPlaylists()
}
override fun unsubscribe() {
disposable.clear()
}
override fun loadPlaylists() {
disposable.add(repository.allPlaylists
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showList(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
private fun showList(songs: ArrayList<Playlist>) {
if (songs.isEmpty()) {
view.showEmptyView()
} else {
view.showData(songs)
}
}
}

View file

@ -1,48 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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()));
}
}

View file

@ -0,0 +1,32 @@
package code.name.monkey.retromusic.mvp.presenter
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.
*/
class PlaylistSongsPresenter(private val view: PlaylistSongsContract.PlaylistSongsView,
private val mPlaylist: Playlist) : Presenter(), PlaylistSongsContract.Presenter {
override fun subscribe() {
loadSongs(mPlaylist)
}
override fun unsubscribe() {
disposable.clear()
}
override fun loadSongs(playlist: Playlist) {
disposable.add(repository.getPlaylistSongs(playlist)
.subscribeOn(schedulerProvider.io())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ songs -> view.showData(songs) },
{ view.showEmptyView() },
{ view.completed() }))
}
}

View file

@ -1,52 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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()));
}
}

View file

@ -0,0 +1,40 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.SearchContract
import java.util.*
import java.util.concurrent.TimeUnit
/**
* Created by hemanths on 20/08/17.
*/
class SearchPresenter(private val view: SearchContract.SearchView) : Presenter(), SearchContract.SearchPresenter {
override fun subscribe() {
search("")
}
override fun unsubscribe() {
disposable.clear()
}
private fun showList(albums: ArrayList<Any>) {
if (albums.isEmpty()) {
view.showEmptyView()
} else {
view.showData(albums)
}
}
override fun search(query: String) {
disposable.add(repository.search(query)
.debounce(500, TimeUnit.MILLISECONDS)
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showList(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
}

View file

@ -1,53 +0,0 @@
package code.name.monkey.retromusic.mvp.presenter;
import androidx.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();
}
}

View file

@ -0,0 +1,39 @@
package code.name.monkey.retromusic.mvp.presenter
import code.name.monkey.retromusic.model.Song
import code.name.monkey.retromusic.mvp.Presenter
import code.name.monkey.retromusic.mvp.contract.SongContract
import java.util.*
/**
* Created by hemanths on 10/08/17.
*/
class SongPresenter(private val view: SongContract.SongView) : Presenter(), SongContract.Presenter {
override fun loadSongs() {
disposable.add(repository.allSongs
.subscribeOn(schedulerProvider.computation())
.observeOn(schedulerProvider.ui())
.doOnSubscribe { view.loading() }
.subscribe({ this.showList(it) },
{ view.showEmptyView() },
{ view.completed() }))
}
override fun subscribe() {
loadSongs()
}
private fun showList(songs: ArrayList<Song>) {
if (songs.isEmpty()) {
view.showEmptyView()
} else {
view.showData(songs)
}
}
override fun unsubscribe() {
disposable.clear()
}
}