tempus/app/src/main/java/com/cappielloantonio/play/viewmodel/AlbumPageViewModel.java

65 lines
2 KiB
Java
Raw Normal View History

2020-11-23 09:28:20 +01:00
package com.cappielloantonio.play.viewmodel;
import android.app.Application;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentActivity;
2020-11-23 09:28:20 +01:00
import androidx.lifecycle.AndroidViewModel;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
2020-11-23 09:28:20 +01:00
import com.cappielloantonio.play.model.Album;
import com.cappielloantonio.play.model.Artist;
2020-11-23 09:28:20 +01:00
import com.cappielloantonio.play.model.Song;
import com.cappielloantonio.play.repository.AlbumRepository;
import com.cappielloantonio.play.repository.ArtistRepository;
import com.cappielloantonio.play.repository.DownloadRepository;
import com.cappielloantonio.play.util.MappingUtil;
2020-11-23 09:28:20 +01:00
import java.util.List;
public class AlbumPageViewModel extends AndroidViewModel {
2021-09-02 14:12:13 +02:00
private final AlbumRepository albumRepository;
private final ArtistRepository artistRepository;
private final DownloadRepository downloadRepository;
2020-11-23 09:28:20 +01:00
private MutableLiveData<List<Song>> songLiveList = new MutableLiveData<>();
2020-11-23 09:28:20 +01:00
private Album album;
private boolean isOffline;
2020-11-23 09:28:20 +01:00
public AlbumPageViewModel(@NonNull Application application) {
super(application);
albumRepository = new AlbumRepository(application);
artistRepository = new ArtistRepository(application);
downloadRepository = new DownloadRepository(application);
2020-11-23 09:28:20 +01:00
}
public LiveData<List<Song>> getAlbumSongLiveList(FragmentActivity activity) {
2021-09-02 14:12:13 +02:00
if (isOffline) {
downloadRepository.getLiveDownloadFromAlbum(album.getId()).observe(activity, downloads -> songLiveList.postValue(MappingUtil.mapDownloadToSong(downloads)));
} else {
songLiveList = albumRepository.getAlbumTracks(album.getId());
}
2021-04-26 19:50:23 +02:00
return songLiveList;
}
2020-11-23 09:28:20 +01:00
public Album getAlbum() {
return album;
}
public void setAlbum(Album album) {
this.album = album;
}
public void setOffline(boolean offline) {
isOffline = offline;
}
public LiveData<Artist> getArtist() {
return artistRepository.getArtistInfo(album.getArtistId());
}
2020-11-23 09:28:20 +01:00
}