package com.cappielloantonio.play.viewmodel; import android.app.Application; import androidx.annotation.NonNull; import androidx.lifecycle.AndroidViewModel; import androidx.lifecycle.LifecycleOwner; 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.Download; 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.repository.SongRepository; import java.util.List; public class HomeViewModel extends AndroidViewModel { private static final String TAG = "HomeViewModel"; private SongRepository songRepository; private AlbumRepository albumRepository; private ArtistRepository artistRepository; private DownloadRepository downloadRepository; private MutableLiveData> dicoverSongSample; private MutableLiveData> mostPlayedAlbumSample; private MutableLiveData> recentlyAddedAlbumSample; private MutableLiveData> recentlyPlayedAlbumSample; private LiveData> downloadedSongSample; private LiveData> years; private MutableLiveData> starredTracks; private MutableLiveData> starredAlbums; private MutableLiveData> starredArtists; public HomeViewModel(@NonNull Application application) { super(application); songRepository = new SongRepository(application); albumRepository = new AlbumRepository(application); artistRepository = new ArtistRepository(application); downloadRepository = new DownloadRepository(application); dicoverSongSample = songRepository.getRandomSample(10, null, null); mostPlayedAlbumSample = albumRepository.getAlbums("frequent", 20); recentlyAddedAlbumSample = albumRepository.getAlbums("newest", 20); recentlyPlayedAlbumSample = albumRepository.getAlbums("recent", 20); downloadedSongSample = downloadRepository.getLiveDownloadSample(10); years = albumRepository.getDecades(); starredTracks = songRepository.getStarredSongs(); starredAlbums = albumRepository.getStarredAlbums(); starredArtists = artistRepository.getStarredArtists(); } public SongRepository getSongRepository() { return songRepository; } public LiveData> getDiscoverSongSample() { return dicoverSongSample; } public LiveData> getYearList() { return years; } public LiveData> getStarredTracks() { return starredTracks; } public LiveData> getStarredAlbums() { return starredAlbums; } public LiveData> getStarredArtists() { return starredArtists; } public LiveData> getDownloaded() { return downloadedSongSample; } public LiveData> getMostPlayedAlbums() { return mostPlayedAlbumSample; } public LiveData> getMostRecentlyAddedAlbums() { return recentlyAddedAlbumSample; } public LiveData> getRecentlyPlayedAlbumList() { return recentlyPlayedAlbumSample; } public void refreshDiscoverySongSample(LifecycleOwner owner) { songRepository.getRandomSample(10, null, null).observe(owner, songs -> dicoverSongSample.postValue(songs)); } public void refreshStarredTracks(LifecycleOwner owner) { songRepository.getStarredSongs().observe(owner, songs -> starredTracks.postValue(songs)); } public void refreshStarredAlbums(LifecycleOwner owner) { albumRepository.getStarredAlbums().observe(owner, albums -> starredAlbums.postValue(albums)); } public void refreshStarredArtists(LifecycleOwner owner) { artistRepository.getStarredArtists().observe(owner, artists -> starredArtists.postValue(artists)); } public void refreshMostPlayedAlbums(LifecycleOwner owner) { albumRepository.getAlbums("frequent", 20).observe(owner, albums -> mostPlayedAlbumSample.postValue(albums)); } public void refreshMostRecentlyAddedAlbums(LifecycleOwner owner) { albumRepository.getAlbums("newest", 20).observe(owner, albums -> recentlyAddedAlbumSample.postValue(albums)); } public void refreshRecentlyPlayedAlbumList(LifecycleOwner owner) { albumRepository.getAlbums("recent", 20).observe(owner, albums -> recentlyPlayedAlbumSample.postValue(albums)); } }