mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 09:53:33 +00:00
Implementation of album and artist catalog recovery
This commit is contained in:
parent
64cd8ed0ac
commit
98ffec9b72
15 changed files with 330 additions and 160 deletions
|
|
@ -1,20 +1,35 @@
|
|||
package com.cappielloantonio.play.viewmodel;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.cappielloantonio.play.App;
|
||||
import com.cappielloantonio.play.interfaces.MediaCallback;
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.repository.AlbumRepository;
|
||||
import com.cappielloantonio.play.subsonic.models.AlbumID3;
|
||||
import com.cappielloantonio.play.subsonic.models.ResponseStatus;
|
||||
import com.cappielloantonio.play.subsonic.models.SubsonicResponse;
|
||||
import com.cappielloantonio.play.util.MappingUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
|
||||
public class AlbumCatalogueViewModel extends AndroidViewModel {
|
||||
public LiveData<List<Album>> albumList;
|
||||
private MutableLiveData<List<Album>> albumList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
private AlbumRepository albumRepository;
|
||||
private String query = "";
|
||||
private int page = 0;
|
||||
|
||||
public AlbumCatalogueViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
|
|
@ -23,10 +38,51 @@ public class AlbumCatalogueViewModel extends AndroidViewModel {
|
|||
}
|
||||
|
||||
public LiveData<List<Album>> getAlbumList() {
|
||||
// albumList = albumRepository.getListLiveAlbums();
|
||||
return albumList;
|
||||
}
|
||||
|
||||
public void loadAlbums(Context context, int size) {
|
||||
retrieveAlbums(context, new MediaCallback() {
|
||||
@Override
|
||||
public void onError(Exception exception) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
List<Album> liveAlbum = albumList.getValue();
|
||||
liveAlbum.addAll(MappingUtil.mapAlbum((List<AlbumID3>) media));
|
||||
albumList.setValue(liveAlbum);
|
||||
|
||||
if (media.size() == size) {
|
||||
loadAlbums(context, size);
|
||||
}
|
||||
}
|
||||
}, size, size * page++);
|
||||
}
|
||||
|
||||
|
||||
private void retrieveAlbums(Context context, MediaCallback callback, int size, int offset) {
|
||||
App.getSubsonicClientInstance(context, false)
|
||||
.getAlbumSongListClient()
|
||||
.getAlbumList2("alphabeticalByName", size, offset)
|
||||
.enqueue(new Callback<SubsonicResponse>() {
|
||||
@Override
|
||||
public void onResponse(Call<SubsonicResponse> call, retrofit2.Response<SubsonicResponse> response) {
|
||||
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) {
|
||||
List<AlbumID3> albumList = new ArrayList<>();
|
||||
albumList.addAll(response.body().getAlbumList2().getAlbums());
|
||||
callback.onLoadMedia(albumList);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<SubsonicResponse> call, Throwable t) {
|
||||
callback.onError(new Exception(t.getMessage()));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,12 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.model.Song;
|
||||
import com.cappielloantonio.play.repository.AlbumRepository;
|
||||
import com.cappielloantonio.play.repository.ArtistRepository;
|
||||
import com.cappielloantonio.play.repository.SongRepository;
|
||||
|
||||
|
|
@ -16,9 +18,10 @@ import java.util.List;
|
|||
|
||||
public class AlbumPageViewModel extends AndroidViewModel {
|
||||
private SongRepository songRepository;
|
||||
private AlbumRepository albumRepository;
|
||||
private ArtistRepository artistRepository;
|
||||
|
||||
private LiveData<List<Song>> songLiveList;
|
||||
private LiveData<List<Song>> songLiveList = new MutableLiveData<>();
|
||||
|
||||
private Album album;
|
||||
|
||||
|
|
@ -26,19 +29,15 @@ public class AlbumPageViewModel extends AndroidViewModel {
|
|||
super(application);
|
||||
|
||||
songRepository = new SongRepository(application);
|
||||
albumRepository = new AlbumRepository(application);
|
||||
artistRepository = new ArtistRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Song>> getAlbumSongLiveList() {
|
||||
// songLiveList = songRepository.getAlbumListLiveSong(album.getId());
|
||||
songLiveList = albumRepository.getAlbumTracks(album.getId());
|
||||
return songLiveList;
|
||||
}
|
||||
|
||||
public List<Song> getAlbumSongList() {
|
||||
// return songRepository.getAlbumListSong(album.getId(), false);
|
||||
return null;
|
||||
}
|
||||
|
||||
public Album getAlbum() {
|
||||
return album;
|
||||
}
|
||||
|
|
@ -47,8 +46,7 @@ public class AlbumPageViewModel extends AndroidViewModel {
|
|||
this.album = album;
|
||||
}
|
||||
|
||||
public Artist getArtist() {
|
||||
// return artistRepository.getArtistByID(album.getArtistId());
|
||||
return null;
|
||||
public LiveData<Artist> getArtist() {
|
||||
return artistRepository.getArtistInfo(album.getArtistId());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,37 @@
|
|||
package com.cappielloantonio.play.viewmodel;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.cappielloantonio.play.App;
|
||||
import com.cappielloantonio.play.interfaces.MediaCallback;
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.repository.ArtistRepository;
|
||||
import com.cappielloantonio.play.subsonic.models.AlbumID3;
|
||||
import com.cappielloantonio.play.subsonic.models.ArtistID3;
|
||||
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.util.MappingUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ArtistCatalogueViewModel extends AndroidViewModel {
|
||||
private ArtistRepository artistRepository;
|
||||
import retrofit2.Call;
|
||||
import retrofit2.Callback;
|
||||
|
||||
private LiveData<List<Artist>> artistList;
|
||||
public class ArtistCatalogueViewModel extends AndroidViewModel {
|
||||
private MutableLiveData<List<Artist>> artistList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
private ArtistRepository artistRepository;
|
||||
private String query = "";
|
||||
private int page = 0;
|
||||
|
||||
public ArtistCatalogueViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
|
|
@ -23,7 +40,39 @@ public class ArtistCatalogueViewModel extends AndroidViewModel {
|
|||
}
|
||||
|
||||
public LiveData<List<Artist>> getArtistList() {
|
||||
// artistList = artistRepository.getListLiveArtists();
|
||||
return artistList;
|
||||
}
|
||||
|
||||
public void loadArtists(Context context) {
|
||||
App.getSubsonicClientInstance(context, false)
|
||||
.getBrowsingClient()
|
||||
.getArtists()
|
||||
.enqueue(new Callback<SubsonicResponse>() {
|
||||
@Override
|
||||
public void onResponse(Call<SubsonicResponse> call, retrofit2.Response<SubsonicResponse> response) {
|
||||
if (response.body().getStatus().getValue().equals(ResponseStatus.OK)) {
|
||||
List<ArtistID3> artists = new ArrayList<>();
|
||||
|
||||
for (IndexID3 index : response.body().getArtists().getIndices()) {
|
||||
artists.addAll(index.getArtists());
|
||||
}
|
||||
|
||||
artistList.setValue(MappingUtil.mapArtist(artists));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<SubsonicResponse> call, Throwable t) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
public void setQuery(String query) {
|
||||
this.query = query;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,22 +5,28 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.cappielloantonio.play.model.Album;
|
||||
import com.cappielloantonio.play.model.Artist;
|
||||
import com.cappielloantonio.play.model.Song;
|
||||
import com.cappielloantonio.play.repository.AlbumRepository;
|
||||
import com.cappielloantonio.play.repository.ArtistRepository;
|
||||
import com.cappielloantonio.play.repository.SongRepository;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ArtistPageViewModel extends AndroidViewModel {
|
||||
private SongRepository songRepository;
|
||||
private AlbumRepository albumRepository;
|
||||
private ArtistRepository artistRepository;
|
||||
|
||||
private List<Song> randomList;
|
||||
private LiveData<List<Song>> songList;
|
||||
private LiveData<List<Album>> albumList;
|
||||
private List<Song> randomList = new ArrayList<>();
|
||||
private LiveData<List<Song>> songList = new MutableLiveData<>();
|
||||
private LiveData<List<Album>> albumList = new MutableLiveData<>();
|
||||
private LiveData<List<Artist>> artistList = new MutableLiveData<>();
|
||||
private LiveData<Artist> artistInfo = new MutableLiveData<>();
|
||||
|
||||
private Artist artist;
|
||||
|
||||
|
|
@ -29,13 +35,19 @@ public class ArtistPageViewModel extends AndroidViewModel {
|
|||
|
||||
songRepository = new SongRepository(application);
|
||||
albumRepository = new AlbumRepository(application);
|
||||
artistRepository = new ArtistRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Album>> getAlbumList() {
|
||||
// albumList = albumRepository.getArtistListLiveAlbums(artist.id);
|
||||
albumList = albumRepository.getArtistAlbums(artist.id);
|
||||
return albumList;
|
||||
}
|
||||
|
||||
public LiveData<Artist> getArtistInfo(String id) {
|
||||
artistInfo = artistRepository.getArtistFullInfo(id);
|
||||
return artistInfo;
|
||||
}
|
||||
|
||||
public List<Song> getArtistRandomSongList() {
|
||||
// randomList = songRepository.getArtistListLiveRandomSong(artist.id);
|
||||
return randomList;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue