- Switched from subsonic-response in xml to response in json

- Retrofitting of all Subsonic models
This commit is contained in:
antonio 2023-03-08 19:19:09 +01:00
parent ca15f51c85
commit 521c51b17e
85 changed files with 682 additions and 898 deletions

View file

@ -8,6 +8,7 @@ import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.interfaces.DecadesCallback;
import com.cappielloantonio.play.interfaces.MediaCallback;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
@ -32,21 +33,21 @@ public class AlbumRepository {
}
public MutableLiveData<List<AlbumID3>> getAlbums(String type, int size, Integer fromYear, Integer toYear) {
MutableLiveData<List<AlbumID3>> listLiveAlbums = new MutableLiveData<>(new ArrayList<>());
MutableLiveData<List<AlbumID3>> listLiveAlbums = new MutableLiveData<>();
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getAlbumList2(type, size, 0, fromYear, toYear)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getAlbumList2() != null) {
listLiveAlbums.setValue(response.body().getAlbumList2().getAlbums());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null) {
listLiveAlbums.setValue(response.body().getSubsonicResponse().getAlbumList2().getAlbums());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -60,11 +61,11 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getStarred2()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getStarred2() != null) {
List<AlbumID3> albums = response.body().getStarred2().getAlbums();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null) {
List<AlbumID3> albums = response.body().getSubsonicResponse().getStarred2().getAlbums();
if (random) {
Collections.shuffle(albums);
@ -76,7 +77,7 @@ public class AlbumRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -88,14 +89,14 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.star(null, id, null)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -105,14 +106,14 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.unstar(null, id, null)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -122,14 +123,14 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.setRating(id, rating)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -141,20 +142,20 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getAlbum(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
List<Child> tracks = new ArrayList<>();
if (response.isSuccessful() && response.body() != null && response.body().getAlbum() != null) {
tracks.addAll(response.body().getAlbum().getSongs());
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbum() != null) {
tracks.addAll(response.body().getSubsonicResponse().getAlbum().getSongs());
}
albumTracks.setValue(tracks);
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -168,18 +169,18 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtist(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
List<AlbumID3> albums = response.body().getArtist().getAlbums();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) {
List<AlbumID3> albums = response.body().getSubsonicResponse().getArtist().getAlbums();
albums.sort(Comparator.comparing(AlbumID3::getYear));
artistsAlbum.setValue(albums);
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -193,16 +194,16 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getAlbum(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getAlbum() != null) {
album.setValue(response.body().getAlbum());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbum() != null) {
album.setValue(response.body().getSubsonicResponse().getAlbum());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -214,20 +215,20 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getSimilarSongs2(album.getId(), count)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
List<Child> songs = new ArrayList<>();
if (response.isSuccessful() && response.body() != null && response.body().getSimilarSongs2() != null) {
songs.addAll(response.body().getSimilarSongs2().getSongs());
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null) {
songs.addAll(response.body().getSubsonicResponse().getSimilarSongs2().getSongs());
}
callback.onLoadMedia(songs);
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
callback.onLoadMedia(new ArrayList<>());
}
});
@ -259,16 +260,16 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getAlbumList2("byYear", 1, 0, 1900, Calendar.getInstance().get(Calendar.YEAR))
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getAlbumList2() != null && response.body().getAlbumList2().getAlbums() != null && !response.body().getAlbumList2().getAlbums().isEmpty()) {
callback.onLoadYear(response.body().getAlbumList2().getAlbums().get(0).getYear());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null && response.body().getSubsonicResponse().getAlbumList2().getAlbums() != null && !response.body().getSubsonicResponse().getAlbumList2().getAlbums().isEmpty()) {
callback.onLoadYear(response.body().getSubsonicResponse().getAlbumList2().getAlbums().get(0).getYear());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
callback.onLoadYear(-1);
}
});
@ -278,12 +279,12 @@ public class AlbumRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getAlbumList2("byYear", 1, 0, Calendar.getInstance().get(Calendar.YEAR), 1900)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getAlbumList2() != null) {
if (response.body().getAlbumList2().getAlbums().size() > 0 && !response.body().getAlbumList2().getAlbums().isEmpty()) {
callback.onLoadYear(response.body().getAlbumList2().getAlbums().get(0).getYear());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getAlbumList2() != null) {
if (response.body().getSubsonicResponse().getAlbumList2().getAlbums().size() > 0 && !response.body().getSubsonicResponse().getAlbumList2().getAlbums().isEmpty()) {
callback.onLoadYear(response.body().getSubsonicResponse().getAlbumList2().getAlbums().get(0).getYear());
} else {
callback.onLoadYear(-1);
}
@ -291,7 +292,7 @@ public class AlbumRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
callback.onLoadYear(-1);
}
});

View file

@ -7,12 +7,12 @@ import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.subsonic.models.ArtistInfo2;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.IndexID3;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
import java.util.ArrayList;
import java.util.Collections;
@ -35,11 +35,11 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getStarred2()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getStarred2() != null) {
List<ArtistID3> artists = response.body().getStarred2().getArtists();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null) {
List<ArtistID3> artists = response.body().getSubsonicResponse().getStarred2().getArtists();
if (!random) {
getArtistInfo(artists, starredArtists);
@ -51,7 +51,7 @@ public class ArtistRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -65,13 +65,13 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtists()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null) {
List<ArtistID3> artists = new ArrayList<>();
for (IndexID3 index : response.body().getArtists().getIndices()) {
for (IndexID3 index : response.body().getSubsonicResponse().getArtists().getIndices()) {
artists.addAll(index.getArtists());
}
@ -85,7 +85,7 @@ public class ArtistRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -104,16 +104,16 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtist(artist.getId())
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
addToMutableLiveData(list, response.body().getArtist());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) {
addToMutableLiveData(list, response.body().getSubsonicResponse().getArtist());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -126,16 +126,16 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtist(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
artist.setValue(response.body().getArtist());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) {
artist.setValue(response.body().getSubsonicResponse().getArtist());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -152,16 +152,16 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtistInfo2(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getArtistInfo2() != null) {
artistFullInfo.setValue(response.body().getArtistInfo2());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtistInfo2() != null) {
artistFullInfo.setValue(response.body().getSubsonicResponse().getArtistInfo2());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -173,14 +173,14 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.star(null, null, id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -190,14 +190,14 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.unstar(null, null, id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -207,14 +207,14 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.setRating(id, rating)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -226,16 +226,16 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtist(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
artist.setValue(response.body().getArtist());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null) {
artist.setValue(response.body().getSubsonicResponse().getArtist());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -249,16 +249,16 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getSimilarSongs2(artist.getId(), count)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSimilarSongs2() != null) {
instantMix.setValue(response.body().getSimilarSongs2().getSongs());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null) {
instantMix.setValue(response.body().getSubsonicResponse().getSimilarSongs2().getSongs());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -272,11 +272,11 @@ public class ArtistRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getArtist(artist.getId())
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getArtist() != null && response.body().getArtist().getAlbums() != null) {
List<AlbumID3> albums = response.body().getArtist().getAlbums();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getArtist() != null && response.body().getSubsonicResponse().getArtist().getAlbums() != null) {
List<AlbumID3> albums = response.body().getSubsonicResponse().getArtist().getAlbums();
if (albums.size() > 0) {
AlbumRepository albumRepository = new AlbumRepository(App.getInstance());
@ -295,7 +295,7 @@ public class ArtistRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -304,21 +304,21 @@ public class ArtistRepository {
}
public MutableLiveData<List<Child>> getTopSongs(String artistName, int count) {
MutableLiveData<List<Child>> topSongs = new MutableLiveData<>();
MutableLiveData<List<Child>> topSongs = new MutableLiveData<>(new ArrayList<>());
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getTopSongs(artistName, count)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getTopSongs() != null) {
topSongs.setValue(response.body().getTopSongs().getSongs());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getTopSongs() != null && response.body().getSubsonicResponse().getTopSongs().getSongs() != null) {
topSongs.setValue(response.body().getSubsonicResponse().getTopSongs().getSongs());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});

View file

@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.Genre;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
@ -31,11 +32,11 @@ public class GenreRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getGenres()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getGenres() != null) {
List<Genre> genreList = response.body().getGenres().getGenres();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getGenres() != null) {
List<Genre> genreList = response.body().getSubsonicResponse().getGenres().getGenres();
if (random) {
Collections.shuffle(genreList);
@ -50,7 +51,7 @@ public class GenreRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});

View file

@ -10,9 +10,9 @@ import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.database.AppDatabase;
import com.cappielloantonio.play.database.dao.PlaylistDao;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.Playlist;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
import java.util.ArrayList;
import java.util.Collections;
@ -34,16 +34,16 @@ public class PlaylistRepository {
}
public MutableLiveData<List<Playlist>> getPlaylists(boolean random, int size) {
MutableLiveData<List<Playlist>> listLivePlaylists = new MutableLiveData<>();
MutableLiveData<List<Playlist>> listLivePlaylists = new MutableLiveData<>(new ArrayList<>());
App.getSubsonicClientInstance(application, false)
.getPlaylistClient()
.getPlaylists()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getPlaylists() != null) {
List<Playlist> playlists = response.body().getPlaylists().getPlaylists();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlaylists() != null && response.body().getSubsonicResponse().getPlaylists().getPlaylists() != null) {
List<Playlist> playlists = response.body().getSubsonicResponse().getPlaylists().getPlaylists();
if (random) {
Collections.shuffle(playlists);
@ -55,7 +55,7 @@ public class PlaylistRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -68,17 +68,17 @@ public class PlaylistRepository {
App.getSubsonicClientInstance(application, false)
.getPlaylistClient()
.getPlaylist(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getPlaylist() != null) {
List<Child> songs = response.body().getPlaylist().getEntries();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPlaylist() != null) {
List<Child> songs = response.body().getSubsonicResponse().getPlaylist().getEntries();
listLivePlaylistSongs.setValue(songs);
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -89,14 +89,14 @@ public class PlaylistRepository {
App.getSubsonicClientInstance(application, false)
.getPlaylistClient()
.updatePlaylist(playlistId, null, true, songsId, null)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -106,14 +106,14 @@ public class PlaylistRepository {
App.getSubsonicClientInstance(application, false)
.getPlaylistClient()
.createPlaylist(playlistId, name, songsId)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
Log.d("PLAYLIST", response.toString());
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
Log.d("PLAYLIST", t.toString());
}
});
@ -123,14 +123,14 @@ public class PlaylistRepository {
App.getSubsonicClientInstance(application, false)
.getPlaylistClient()
.updatePlaylist(playlistId, name, isPublic, songIdToAdd, songIndexToRemove)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -140,14 +140,14 @@ public class PlaylistRepository {
App.getSubsonicClientInstance(application, false)
.getPlaylistClient()
.deletePlaylist(playlistId)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});

View file

@ -7,6 +7,7 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.PodcastChannel;
import com.cappielloantonio.play.subsonic.models.PodcastEpisode;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
@ -32,16 +33,16 @@ public class PodcastRepository {
App.getSubsonicClientInstance(application, false)
.getPodcastClient()
.getPodcasts(includeEpisodes, channelId)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getPodcasts() != null) {
livePodcastChannel.setValue(response.body().getPodcasts().getChannels());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getPodcasts() != null) {
livePodcastChannel.setValue(response.body().getSubsonicResponse().getPodcasts().getChannels());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -55,16 +56,16 @@ public class PodcastRepository {
App.getSubsonicClientInstance(application, false)
.getPodcastClient()
.getNewestPodcasts(count)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getNewestPodcasts() != null) {
liveNewestPodcastEpisodes.setValue(response.body().getNewestPodcasts().getEpisodes());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getNewestPodcasts() != null) {
liveNewestPodcastEpisodes.setValue(response.body().getSubsonicResponse().getNewestPodcasts().getEpisodes());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
Log.d(TAG, "onFailure()");
}
});
@ -76,14 +77,14 @@ public class PodcastRepository {
App.getSubsonicClientInstance(application, false)
.getPodcastClient()
.refreshPodcasts()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});

View file

@ -62,7 +62,12 @@ public class QueueRepository {
mediaList = getMediaThreadSafe.getMedia();
}
mediaList.add(afterIndex, (Queue) media);
Queue queueItem = new Queue(media);
mediaList.add(afterIndex, queueItem);
for (int i = 0; i < mediaList.size(); i++) {
mediaList.get(i).setTrackOrder(i);
}
Thread delete = new Thread(new DeleteAllThreadSafe(queueDao));
delete.start();
@ -90,7 +95,12 @@ public class QueueRepository {
}
for (int i = 0; i < toAdd.size(); i++) {
media.add(afterIndex + i, (Queue) toAdd.get(i));
Queue queueItem = new Queue(toAdd.get(i));
media.add(afterIndex + i, queueItem);
}
for (int i = 0; i < media.size(); i++) {
media.get(i).setTrackOrder(i);
}
Thread delete = new Thread(new DeleteAllThreadSafe(queueDao));

View file

@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.interfaces.ScanCallback;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
import retrofit2.Call;
@ -24,16 +25,16 @@ public class ScanRepository {
App.getSubsonicClientInstance(application, false)
.getMediaLibraryScanningClient()
.startScan()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull retrofit2.Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getScanStatus() != null) {
callback.onSuccess(response.body().getScanStatus().isScanning(), response.body().getScanStatus().getCount());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull retrofit2.Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getScanStatus() != null) {
callback.onSuccess(response.body().getSubsonicResponse().getScanStatus().isScanning(), response.body().getSubsonicResponse().getScanStatus().getCount());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
callback.onError(new Exception(t.getMessage()));
}
});
@ -43,16 +44,16 @@ public class ScanRepository {
App.getSubsonicClientInstance(application, false)
.getMediaLibraryScanningClient()
.startScan()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull retrofit2.Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getScanStatus() != null) {
callback.onSuccess(response.body().getScanStatus().isScanning(), response.body().getScanStatus().getCount());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull retrofit2.Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getScanStatus() != null) {
callback.onSuccess(response.body().getSubsonicResponse().getScanStatus().isScanning(), response.body().getSubsonicResponse().getScanStatus().getCount());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
callback.onError(new Exception(t.getMessage()));
}
});

View file

@ -9,6 +9,7 @@ import com.cappielloantonio.play.App;
import com.cappielloantonio.play.database.AppDatabase;
import com.cappielloantonio.play.database.dao.RecentSearchDao;
import com.cappielloantonio.play.model.RecentSearch;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.AlbumID3;
import com.cappielloantonio.play.subsonic.models.ArtistID3;
import com.cappielloantonio.play.subsonic.models.Child;
@ -39,15 +40,15 @@ public class SearchingRepository {
App.getSubsonicClientInstance(application, false)
.getSearchingClient()
.search3(query, 20, 0, 0)
.enqueue(new Callback<SubsonicResponse>() {
.search3(query, 20, 20, 20)
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
result.setValue(response.body().getSearchResult3());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
result.setValue(response.body().getSubsonicResponse().getSearchResult3());
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -61,22 +62,28 @@ public class SearchingRepository {
App.getSubsonicClientInstance(application, false)
.getSearchingClient()
.search3(query, 5, 5, 5)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
List<String> newSuggestions = new ArrayList();
if (response.isSuccessful() && response.body() != null) {
for (ArtistID3 artistID3 : response.body().getSearchResult3().getArtists()) {
newSuggestions.add(artistID3.getName());
if(response.body().getSubsonicResponse().getSearchResult3().getArtists() != null) {
for (ArtistID3 artistID3 : response.body().getSubsonicResponse().getSearchResult3().getArtists()) {
newSuggestions.add(artistID3.getName());
}
}
for (AlbumID3 albumID3 : response.body().getSearchResult3().getAlbums()) {
newSuggestions.add(albumID3.getName());
if(response.body().getSubsonicResponse().getSearchResult3().getAlbums() != null) {
for (AlbumID3 albumID3 : response.body().getSubsonicResponse().getSearchResult3().getAlbums()) {
newSuggestions.add(albumID3.getName());
}
}
for (Child song : response.body().getSearchResult3().getSongs()) {
newSuggestions.add(song.getTitle());
if(response.body().getSubsonicResponse().getSearchResult3().getSongs() != null) {
for (Child song : response.body().getSubsonicResponse().getSearchResult3().getSongs()) {
newSuggestions.add(song.getTitle());
}
}
LinkedHashSet<String> hashSet = new LinkedHashSet<>(newSuggestions);
@ -87,7 +94,7 @@ public class SearchingRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});

View file

@ -1,19 +1,23 @@
package com.cappielloantonio.play.repository;
import android.app.Application;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.Child;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.stream.Collectors;
import kotlin.collections.EmptyList;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@ -28,28 +32,30 @@ public class SongRepository {
}
public MutableLiveData<List<Child>> getStarredSongs(boolean random, int size) {
MutableLiveData<List<Child>> starredSongs = new MutableLiveData<>();
MutableLiveData<List<Child>> starredSongs = new MutableLiveData<>(Collections.EMPTY_LIST);
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getStarred2()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getStarred2() != null) {
List<Child> songs = response.body().getStarred2().getSongs();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getStarred2() != null) {
List<Child> songs = response.body().getSubsonicResponse().getStarred2().getSongs();
if (!random) {
starredSongs.setValue(songs);
} else {
Collections.shuffle(songs);
starredSongs.setValue(songs.subList(0, Math.min(size, songs.size())));
if (songs != null) {
if (!random) {
starredSongs.setValue(songs);
} else {
Collections.shuffle(songs);
starredSongs.setValue(songs.subList(0, Math.min(size, songs.size())));
}
}
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -63,16 +69,16 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getSimilarSongs2(song.getId(), count)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSimilarSongs2() != null) {
instantMix.setValue(response.body().getSimilarSongs2().getSongs());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSimilarSongs2() != null) {
instantMix.setValue(response.body().getSubsonicResponse().getSimilarSongs2().getSongs());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
instantMix.setValue(null);
}
});
@ -86,21 +92,21 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getRandomSongs(number, fromYear, toYear)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
List<Child> songs = new ArrayList<>();
if (response.isSuccessful() && response.body() != null && response.body().getRandomSongs() != null) {
songs.addAll(response.body().getRandomSongs().getSongs());
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getRandomSongs() != null) {
songs.addAll(response.body().getSubsonicResponse().getRandomSongs().getSongs());
}
randomSongsSample.setValue(songs);
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
Log.d(TAG, "onFailure: ");
}
});
@ -111,14 +117,14 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.scrobble(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -128,14 +134,14 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.star(id, null, null)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -145,14 +151,14 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.unstar(id, null, null)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -162,14 +168,14 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getMediaAnnotationClient()
.setRating(id, rating)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -181,11 +187,11 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getSongsByGenre(id, 500, 0)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSongsByGenre() != null) {
List<Child> newSongs = response.body().getSongsByGenre().getSongs();
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSongsByGenre() != null) {
List<Child> newSongs = response.body().getSubsonicResponse().getSongsByGenre().getSongs();
List<Child> songs = songsByGenre.getValue();
if (songs == null) songs = new ArrayList<>();
@ -200,7 +206,7 @@ public class SongRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -215,20 +221,20 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getAlbumSongListClient()
.getSongsByGenre(id, 500, 0)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
List<Child> songs = new ArrayList<>();
if (response.isSuccessful() && response.body() != null && response.body().getSongsByGenre() != null) {
songs.addAll(response.body().getSongsByGenre().getSongs());
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getSongsByGenre() != null) {
songs.addAll(response.body().getSubsonicResponse().getSongsByGenre().getSongs());
}
songsByGenre.setValue(songs);
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});
@ -242,17 +248,17 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getBrowsingClient()
.getSong(id)
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null) {
song.setValue(response.body().getSong());
song.setValue(response.body().getSubsonicResponse().getSong());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
Log.d(TAG, "onFailure: ");
}
});
@ -265,16 +271,16 @@ public class SongRepository {
App.getSubsonicClientInstance(application, false)
.getMediaRetrievalClient()
.getLyrics(song.getArtist(), song.getTitle())
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getLyrics() != null) {
lyrics.setValue(response.body().getLyrics().getContent());
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().getSubsonicResponse().getLyrics() != null) {
lyrics.setValue(response.body().getSubsonicResponse().getLyrics().getContent());
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
}
});

View file

@ -7,6 +7,7 @@ import androidx.lifecycle.MutableLiveData;
import com.cappielloantonio.play.App;
import com.cappielloantonio.play.interfaces.SystemCallback;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import com.cappielloantonio.play.subsonic.models.ResponseStatus;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
@ -27,13 +28,13 @@ public class SystemRepository {
App.getSubsonicClientInstance(application, false)
.getSystemClient()
.ping()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull retrofit2.Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull retrofit2.Response<ApiResponse> response) {
if (response.body() != null) {
if (response.body().getStatus().getValue().equals(ResponseStatus.FAILED)) {
callback.onError(new Exception(response.body().getError().getCode().getValue() + " - " + response.body().getError().getMessage()));
} else if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) {
if (response.body().getSubsonicResponse().getStatus().equals(ResponseStatus.FAILED)) {
callback.onError(new Exception(response.body().getSubsonicResponse().getError().getCode().getValue() + " - " + response.body().getSubsonicResponse().getError().getMessage()));
} else if (response.body().getSubsonicResponse().getStatus().equals(ResponseStatus.OK)) {
String password = response.raw().request().url().queryParameter("p");
String token = response.raw().request().url().queryParameter("t");
String salt = response.raw().request().url().queryParameter("s");
@ -47,7 +48,7 @@ public class SystemRepository {
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
callback.onError(new Exception(t.getMessage()));
}
});
@ -59,16 +60,16 @@ public class SystemRepository {
App.getSubsonicClientInstance(application, false)
.getSystemClient()
.ping()
.enqueue(new Callback<SubsonicResponse>() {
.enqueue(new Callback<ApiResponse>() {
@Override
public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
public void onResponse(@NonNull Call<ApiResponse> call, @NonNull Response<ApiResponse> response) {
if (response.isSuccessful() && response.body() != null) {
pingResult.postValue(true);
}
}
@Override
public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
public void onFailure(@NonNull Call<ApiResponse> call, @NonNull Throwable t) {
pingResult.postValue(false);
}
});