From b92310f40f73092d6dc3854ca082fe22cb0766ff Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Mon, 6 Dec 2021 11:43:52 +0100 Subject: [PATCH] Randomized and limited the elements shown in the home in the starred sections --- .../play/repository/AlbumRepository.java | 16 ++++++++++------ .../play/repository/ArtistRepository.java | 10 ++++++++-- .../play/viewmodel/AlbumListPageViewModel.java | 2 +- .../play/viewmodel/ArtistListPageViewModel.java | 2 +- .../play/viewmodel/HomeViewModel.java | 12 ++++++------ 5 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java index 2bced0d5..cfc3452a 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java @@ -15,6 +15,7 @@ import com.cappielloantonio.play.util.MappingUtil; import java.util.ArrayList; import java.util.Calendar; +import java.util.Collections; import java.util.List; import retrofit2.Call; @@ -57,7 +58,7 @@ public class AlbumRepository { return listLiveAlbums; } - public MutableLiveData> getStarredAlbums() { + public MutableLiveData> getStarredAlbums(boolean random, int size) { MutableLiveData> starredAlbums = new MutableLiveData<>(); App.getSubsonicClientInstance(application, false) @@ -66,13 +67,16 @@ public class AlbumRepository { .enqueue(new Callback() { @Override public void onResponse(@NonNull Call call, @NonNull Response response) { - List albums = new ArrayList<>(); - if (response.isSuccessful() && response.body() != null && response.body().getStarred2() != null) { - albums.addAll(MappingUtil.mapAlbum(response.body().getStarred2().getAlbums())); - } + List albums = new ArrayList<>(MappingUtil.mapAlbum(response.body().getStarred2().getAlbums())); - starredAlbums.setValue(albums); + if (!random) { + starredAlbums.setValue(albums); + } else { + Collections.shuffle(albums); + starredAlbums.setValue(albums.subList(0, Math.min(size, albums.size()))); + } + } } @Override diff --git a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java index 48b85857..4c2817c1 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java @@ -30,7 +30,7 @@ public class ArtistRepository { this.application = application; } - public MutableLiveData> getStarredArtists() { + public MutableLiveData> getStarredArtists(boolean random, int size) { MutableLiveData> starredArtists = new MutableLiveData<>(); App.getSubsonicClientInstance(application, false) @@ -41,7 +41,13 @@ public class ArtistRepository { public void onResponse(@NonNull Call call, @NonNull Response response) { if (response.isSuccessful() && response.body() != null && response.body().getStarred2() != null) { List artists = new ArrayList<>(MappingUtil.mapArtist(response.body().getStarred2().getArtists())); - getArtistInfo(artists, starredArtists); + + if (!random) { + getArtistInfo(artists, starredArtists); + } else { + Collections.shuffle(artists); + getArtistInfo(artists.subList(0, Math.min(size, artists.size())), starredArtists); + } } } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java index 618971e0..0ef84080 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumListPageViewModel.java @@ -47,7 +47,7 @@ public class AlbumListPageViewModel extends AndroidViewModel { albumRepository.getAlbums("newest", 500, null, null).observe(activity, albums -> albumList.setValue(albums)); break; case Album.STARRED: - albumList = albumRepository.getStarredAlbums(); + albumList = albumRepository.getStarredAlbums(false, -1); break; case Album.DOWNLOADED: downloadRepository.getLiveDownload().observe(activity, downloads -> albumList.setValue(MappingUtil.mapDownloadToAlbum(downloads))); diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java index 07e0d313..6b506405 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistListPageViewModel.java @@ -40,7 +40,7 @@ public class ArtistListPageViewModel extends AndroidViewModel { switch (title) { case Artist.STARRED: - artistList = artistRepository.getStarredArtists(); + artistList = artistRepository.getStarredArtists(false, -1); break; case Artist.DOWNLOADED: downloadRepository.getLiveDownload().observe(activity, downloads -> { diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java index dc4cb6d0..8d198dcc 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/HomeViewModel.java @@ -68,17 +68,17 @@ public class HomeViewModel extends AndroidViewModel { } public LiveData> getStarredTracks(LifecycleOwner owner) { - songRepository.getStarredSongs(false, -1).observe(owner, starredTracks::postValue); + songRepository.getStarredSongs(true, 20).observe(owner, starredTracks::postValue); return starredTracks; } public LiveData> getStarredAlbums(LifecycleOwner owner) { - albumRepository.getStarredAlbums().observe(owner, starredAlbums::postValue); + albumRepository.getStarredAlbums(true, 20).observe(owner, starredAlbums::postValue); return starredAlbums; } public LiveData> getStarredArtists(LifecycleOwner owner) { - artistRepository.getStarredArtists().observe(owner, starredArtists::postValue); + artistRepository.getStarredArtists(true, 20).observe(owner, starredArtists::postValue); return starredArtists; } @@ -119,15 +119,15 @@ public class HomeViewModel extends AndroidViewModel { } public void refreshStarredTracks(LifecycleOwner owner) { - songRepository.getStarredSongs(false, -1).observe(owner, starredTracks::postValue); + songRepository.getStarredSongs(true, 20).observe(owner, starredTracks::postValue); } public void refreshStarredAlbums(LifecycleOwner owner) { - albumRepository.getStarredAlbums().observe(owner, starredAlbums::postValue); + albumRepository.getStarredAlbums(true, 20).observe(owner, starredAlbums::postValue); } public void refreshStarredArtists(LifecycleOwner owner) { - artistRepository.getStarredArtists().observe(owner, starredArtists::postValue); + artistRepository.getStarredArtists(true, 20).observe(owner, starredArtists::postValue); } public void refreshMostPlayedAlbums(LifecycleOwner owner) {