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 14f087ec..cdfd428c 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java @@ -284,6 +284,27 @@ public class ArtistRepository { return randomSongs; } + public MutableLiveData> getTopSongs(String artistName, int count) { + MutableLiveData> topSongs = new MutableLiveData<>(); + + App.getSubsonicClientInstance(application, false) + .getBrowsingClient() + .getTopSongs(artistName, count) + .enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + topSongs.setValue(MappingUtil.mapSong(response.body().getTopSongs().getSongs())); + } + + @Override + public void onFailure(Call call, Throwable t) { + + } + }); + + return topSongs; + } + private void addToMutableLiveData(MutableLiveData> liveData, Artist artist) { List liveArtists = liveData.getValue(); liveArtists.add(artist); diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java index 5ca7ee4d..4f0986ca 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingClient.java @@ -110,9 +110,9 @@ public class BrowsingClient { return browsingService.getSimilarSongs2(subsonic.getParams(), id, limit); } - public Call getTopSongs(String id, int count) { + public Call getTopSongs(String artist, int count) { Log.d(TAG, "getTopSongs()"); - return browsingService.getTopSongs(subsonic.getParams(), id, count); + return browsingService.getTopSongs(subsonic.getParams(), artist, count); } private OkHttpClient getOkHttpClient() { diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingService.java b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingService.java index ed06d5be..dfa99e43 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingService.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/api/browsing/BrowsingService.java @@ -59,5 +59,5 @@ public interface BrowsingService { Call getSimilarSongs2(@QueryMap Map params, @Query("id") String id, @Query("count") int count); @GET("getTopSongs") - Call getTopSongs(@QueryMap Map params, @Query("id") String id, @Query("count") int count); + Call getTopSongs(@QueryMap Map params, @Query("artist") String artist, @Query("count") int count); } diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/models/SubsonicResponse.java b/app/src/main/java/com/cappielloantonio/play/subsonic/models/SubsonicResponse.java index 168e1271..e5b46932 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/models/SubsonicResponse.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/models/SubsonicResponse.java @@ -10,6 +10,7 @@ public class SubsonicResponse { @Element private Error error; private ScanStatus scanStatus; + @Element(name = "topSongs") private TopSongs topSongs; @Element(name = "similarSongs2") private SimilarSongs2 similarSongs2; diff --git a/app/src/main/java/com/cappielloantonio/play/subsonic/models/TopSongs.java b/app/src/main/java/com/cappielloantonio/play/subsonic/models/TopSongs.java index 0a7eb593..489dcdc3 100644 --- a/app/src/main/java/com/cappielloantonio/play/subsonic/models/TopSongs.java +++ b/app/src/main/java/com/cappielloantonio/play/subsonic/models/TopSongs.java @@ -1,35 +1,24 @@ package com.cappielloantonio.play.subsonic.models; +import com.tickaroo.tikxml.annotation.Element; +import com.tickaroo.tikxml.annotation.Xml; + import java.util.ArrayList; import java.util.List; +@Xml public class TopSongs { + @Element(name = "song") protected List songs; - - /** - * Gets the value of the songs property. - * - *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the songs property. - * - *

- * For example, to add a new item, do as follows: - *

-     *    getSongs().add(newItem);
-     * 
- * - * - *

- * Objects of the following type(s) are allowed in the list - * {@link Child } - */ + public List getSongs() { if (songs == null) { - songs = new ArrayList(); + songs = new ArrayList<>(); } return this.songs; } + + public void setSongs(List songs) { + this.songs = songs; + } } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java index 20c1923c..204e7eb9 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/ArtistPageViewModel.java @@ -54,7 +54,7 @@ public class ArtistPageViewModel extends AndroidViewModel { } public LiveData> getArtistTopSongList() { - // songList = songRepository.getArtistListLiveTopSongSample(artist.id); + songList = artistRepository.getTopSongs(artist.getName(), 50); return songList; }