Reinforced response checks on ArtistRepository

This commit is contained in:
CappielloAntonio 2021-08-24 12:59:03 +02:00
parent 489233ad6d
commit c37002c87b

View file

@ -2,6 +2,7 @@ package com.cappielloantonio.play.repository;
import android.app.Application; import android.app.Application;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
@ -11,7 +12,6 @@ import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.model.Artist;
import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.subsonic.models.IndexID3; import com.cappielloantonio.play.subsonic.models.IndexID3;
import com.cappielloantonio.play.subsonic.models.ResponseStatus;
import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MappingUtil;
@ -24,7 +24,7 @@ import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
public class ArtistRepository { public class ArtistRepository {
private Application application; private final Application application;
public ArtistRepository(Application application) { public ArtistRepository(Application application) {
this.application = application; this.application = application;
@ -38,15 +38,16 @@ public class ArtistRepository {
.getStarred2() .getStarred2()
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) { if(response.isSuccessful() && response.body() != null && response.body().getStarred2() != null) {
List<Artist> artists = new ArrayList<>(MappingUtil.mapArtist(response.body().getStarred2().getArtists())); List<Artist> artists = new ArrayList<>(MappingUtil.mapArtist(response.body().getStarred2().getArtists()));
getArtistInfo(artists, starredArtists); getArtistInfo(artists, starredArtists);
} }
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -61,8 +62,8 @@ public class ArtistRepository {
.getArtists() .getArtists()
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) { if (response.isSuccessful() && response.body() != null) {
List<Artist> artists = new ArrayList<>(); List<Artist> artists = new ArrayList<>();
for (IndexID3 index : response.body().getArtists().getIndices()) { for (IndexID3 index : response.body().getArtists().getIndices()) {
@ -79,7 +80,7 @@ public class ArtistRepository {
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -100,12 +101,14 @@ public class ArtistRepository {
.getArtist(artist.getId()) .getArtist(artist.getId())
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
addToMutableLiveData(list, MappingUtil.mapArtistWithAlbum(response.body().getArtist())); if(response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
addToMutableLiveData(list, MappingUtil.mapArtistWithAlbum(response.body().getArtist()));
}
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -120,12 +123,14 @@ public class ArtistRepository {
.getArtist(id) .getArtist(id)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
artist.setValue(MappingUtil.mapArtistWithAlbum(response.body().getArtist())); if(response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
artist.setValue(MappingUtil.mapArtistWithAlbum(response.body().getArtist()));
}
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -144,12 +149,14 @@ public class ArtistRepository {
.getArtistInfo2(id) .getArtistInfo2(id)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getArtistInfo2() != null) artistFullInfo.setValue(MappingUtil.mapArtist(response.body().getArtistInfo2())); if(response.isSuccessful() && response.body() != null && response.body().getArtistInfo2() != null) {
artistFullInfo.setValue(MappingUtil.mapArtist(response.body().getArtistInfo2()));
}
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -163,12 +170,12 @@ public class ArtistRepository {
.star(null, null, id) .star(null, null, id)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -180,12 +187,12 @@ public class ArtistRepository {
.unstar(null, null, id) .unstar(null, null, id)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -197,12 +204,12 @@ public class ArtistRepository {
.setRating(id, rating) .setRating(id, rating)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -216,14 +223,14 @@ public class ArtistRepository {
.getArtist(id) .getArtist(id)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) { if(response.isSuccessful() && response.body() != null && response.body().getArtist() != null) {
artist.setValue(MappingUtil.mapArtist(response.body().getArtist())); artist.setValue(MappingUtil.mapArtist(response.body().getArtist()));
} }
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -237,15 +244,18 @@ public class ArtistRepository {
.getSimilarSongs2(artist.getId(), count) .getSimilarSongs2(artist.getId(), count)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) { List<Song> songs = new ArrayList<>();
List<Song> songs = new ArrayList<>(MappingUtil.mapSong(response.body().getSimilarSongs2().getSongs()));
callback.onLoadMedia(songs); if(response.isSuccessful() && response.body() != null && response.body().getSimilarSongs2() != null) {
songs.addAll(MappingUtil.mapSong(response.body().getSimilarSongs2().getSongs()));
} }
callback.onLoadMedia(songs);
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
callback.onLoadMedia(new ArrayList<>()); callback.onLoadMedia(new ArrayList<>());
} }
}); });
@ -259,8 +269,8 @@ public class ArtistRepository {
.getArtist(artist.getId()) .getArtist(artist.getId())
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) { if (response.isSuccessful() && response.body() != null && response.body().getArtist() != null && response.body().getArtist().getAlbums() != null) {
List<Album> albums = new ArrayList<>(MappingUtil.mapAlbum(response.body().getArtist().getAlbums())); List<Album> albums = new ArrayList<>(MappingUtil.mapAlbum(response.body().getArtist().getAlbums()));
if (albums.size() > 0) { if (albums.size() > 0) {
@ -280,7 +290,7 @@ public class ArtistRepository {
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -296,14 +306,14 @@ public class ArtistRepository {
.getTopSongs(artistName, count) .getTopSongs(artistName, count)
.enqueue(new Callback<SubsonicResponse>() { .enqueue(new Callback<SubsonicResponse>() {
@Override @Override
public void onResponse(Call<SubsonicResponse> call, Response<SubsonicResponse> response) { public void onResponse(@NonNull Call<SubsonicResponse> call, @NonNull Response<SubsonicResponse> response) {
if (response.body().getTopSongs() != null) { if (response.isSuccessful() && response.body() != null && response.body().getTopSongs() != null) {
topSongs.setValue(MappingUtil.mapSong(response.body().getTopSongs().getSongs())); topSongs.setValue(MappingUtil.mapSong(response.body().getTopSongs().getSongs()));
} }
} }
@Override @Override
public void onFailure(Call<SubsonicResponse> call, Throwable t) { public void onFailure(@NonNull Call<SubsonicResponse> call, @NonNull Throwable t) {
} }
}); });
@ -313,7 +323,7 @@ public class ArtistRepository {
private void addToMutableLiveData(MutableLiveData<List<Artist>> liveData, Artist artist) { private void addToMutableLiveData(MutableLiveData<List<Artist>> liveData, Artist artist) {
List<Artist> liveArtists = liveData.getValue(); List<Artist> liveArtists = liveData.getValue();
liveArtists.add(artist); if(liveArtists != null) liveArtists.add(artist);
liveData.setValue(liveArtists); liveData.setValue(liveArtists);
} }
} }