mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 17:43:32 +00:00
In ViewModels passed the LifecycleOwner instead of the Activity
This commit is contained in:
parent
d2ad0188b7
commit
134d4e33e5
7 changed files with 53 additions and 45 deletions
|
|
@ -28,7 +28,6 @@ import com.cappielloantonio.play.ui.activity.MainActivity;
|
|||
import com.cappielloantonio.play.viewmodel.PlaylistCatalogueViewModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class PlaylistCatalogueFragment extends Fragment {
|
||||
|
|
@ -111,32 +110,35 @@ public class PlaylistCatalogueFragment extends Fragment {
|
|||
|
||||
playlistCatalogueAdapter = new PlaylistCatalogueAdapter(activity, requireContext(), playlistCatalogueViewModel.getType().equals(Playlist.DOWNLOADED));
|
||||
bind.playlistCatalogueRecyclerView.setAdapter(playlistCatalogueAdapter);
|
||||
playlistCatalogueViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists -> {
|
||||
playlistCatalogueViewModel.getPinnedPlaylistList(requireActivity()).observe(requireActivity(), pinnedPlaylists -> {
|
||||
List<Playlist> sortedList = new ArrayList<>();
|
||||
List<Playlist> unsortedList = new ArrayList<>(playlists);
|
||||
|
||||
List<Playlist> pinnedPlaylistsVerified = new ArrayList<>();
|
||||
List<Playlist> pinnedPlaylistsNotFound = new ArrayList<>();
|
||||
if(getActivity() != null) {
|
||||
playlistCatalogueViewModel.getPlaylistList(requireActivity()).observe(requireActivity(), playlists ->
|
||||
playlistCatalogueViewModel.getPinnedPlaylistList(requireActivity()).observe(requireActivity(),
|
||||
pinnedPlaylists -> {
|
||||
List<Playlist> sortedList = new ArrayList<>();
|
||||
List<Playlist> unsortedList = new ArrayList<>(playlists);
|
||||
|
||||
if(unsortedList.size() > 0) {
|
||||
for(Playlist pinnedPlaylist: pinnedPlaylists) {
|
||||
if(playlists.contains(pinnedPlaylist)) {
|
||||
pinnedPlaylistsVerified.add(pinnedPlaylist);
|
||||
} else {
|
||||
pinnedPlaylistsNotFound.add(pinnedPlaylist);
|
||||
}
|
||||
}
|
||||
List<Playlist> pinnedPlaylistsVerified = new ArrayList<>();
|
||||
List<Playlist> pinnedPlaylistsNotFound = new ArrayList<>();
|
||||
|
||||
unsortedList.removeAll(pinnedPlaylistsVerified);
|
||||
sortedList.addAll(pinnedPlaylistsVerified);
|
||||
sortedList.addAll(unsortedList);
|
||||
}
|
||||
if (unsortedList.size() > 0) {
|
||||
for (Playlist pinnedPlaylist : pinnedPlaylists) {
|
||||
if (playlists.contains(pinnedPlaylist)) {
|
||||
pinnedPlaylistsVerified.add(pinnedPlaylist);
|
||||
} else {
|
||||
pinnedPlaylistsNotFound.add(pinnedPlaylist);
|
||||
}
|
||||
}
|
||||
|
||||
playlistCatalogueAdapter.setItems(sortedList);
|
||||
playlistCatalogueViewModel.unpinPlaylist(pinnedPlaylistsNotFound);
|
||||
});
|
||||
});
|
||||
unsortedList.removeAll(pinnedPlaylistsVerified);
|
||||
sortedList.addAll(pinnedPlaylistsVerified);
|
||||
sortedList.addAll(unsortedList);
|
||||
}
|
||||
|
||||
playlistCatalogueAdapter.setItems(sortedList);
|
||||
playlistCatalogueViewModel.unpinPlaylist(pinnedPlaylistsNotFound);
|
||||
}));
|
||||
}
|
||||
|
||||
bind.playlistCatalogueRecyclerView.setOnTouchListener((v, event) -> {
|
||||
hideKeyboard(v);
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
|
@ -33,27 +34,27 @@ public class AlbumListPageViewModel extends AndroidViewModel {
|
|||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Album>> getAlbumList(FragmentActivity activity) {
|
||||
public LiveData<List<Album>> getAlbumList(LifecycleOwner owner) {
|
||||
albumList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
switch (title) {
|
||||
case Album.RECENTLY_PLAYED:
|
||||
albumRepository.getAlbums("recent", 500, null, null).observe(activity, albums -> albumList.setValue(albums));
|
||||
albumRepository.getAlbums("recent", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
|
||||
break;
|
||||
case Album.MOST_PLAYED:
|
||||
albumRepository.getAlbums("frequent", 500, null, null).observe(activity, albums -> albumList.setValue(albums));
|
||||
albumRepository.getAlbums("frequent", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
|
||||
break;
|
||||
case Album.RECENTLY_ADDED:
|
||||
albumRepository.getAlbums("newest", 500, null, null).observe(activity, albums -> albumList.setValue(albums));
|
||||
albumRepository.getAlbums("newest", 500, null, null).observe(owner, albums -> albumList.setValue(albums));
|
||||
break;
|
||||
case Album.STARRED:
|
||||
albumList = albumRepository.getStarredAlbums(false, -1);
|
||||
break;
|
||||
case Album.DOWNLOADED:
|
||||
downloadRepository.getLiveDownload().observe(activity, downloads -> albumList.setValue(MappingUtil.mapDownloadToAlbum(downloads)));
|
||||
downloadRepository.getLiveDownload().observe(owner, downloads -> albumList.setValue(MappingUtil.mapDownloadToAlbum(downloads)));
|
||||
break;
|
||||
case Album.FROM_ARTIST:
|
||||
downloadRepository.getLiveDownloadFromArtist(artist.getId()).observe(activity, downloads -> albumList.setValue(MappingUtil.mapDownloadToAlbum(downloads)));
|
||||
downloadRepository.getLiveDownloadFromArtist(artist.getId()).observe(owner, downloads -> albumList.setValue(MappingUtil.mapDownloadToAlbum(downloads)));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
|
@ -36,9 +37,9 @@ public class AlbumPageViewModel extends AndroidViewModel {
|
|||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Song>> getAlbumSongLiveList(FragmentActivity activity) {
|
||||
public LiveData<List<Song>> getAlbumSongLiveList(LifecycleOwner owner) {
|
||||
if (isOffline) {
|
||||
downloadRepository.getLiveDownloadFromAlbum(album.getId()).observe(activity, downloads -> songLiveList.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
downloadRepository.getLiveDownloadFromAlbum(album.getId()).observe(owner, downloads -> songLiveList.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
} else {
|
||||
songLiveList = albumRepository.getAlbumTracks(album.getId());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
|
@ -35,7 +36,7 @@ public class ArtistListPageViewModel extends AndroidViewModel {
|
|||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Artist>> getArtistList(FragmentActivity activity) {
|
||||
public LiveData<List<Artist>> getArtistList(LifecycleOwner owner) {
|
||||
artistList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
switch (title) {
|
||||
|
|
@ -43,7 +44,7 @@ public class ArtistListPageViewModel extends AndroidViewModel {
|
|||
artistList = artistRepository.getStarredArtists(false, -1);
|
||||
break;
|
||||
case Artist.DOWNLOADED:
|
||||
downloadRepository.getLiveDownload().observe(activity, downloads -> {
|
||||
downloadRepository.getLiveDownload().observe(owner, downloads -> {
|
||||
List<Download> unique = downloads
|
||||
.stream()
|
||||
.collect(Collectors.collectingAndThen(
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
|
@ -34,15 +35,15 @@ public class PlaylistCatalogueViewModel extends AndroidViewModel {
|
|||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Playlist>> getPlaylistList(FragmentActivity activity) {
|
||||
public LiveData<List<Playlist>> getPlaylistList(LifecycleOwner owner) {
|
||||
playlistList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
switch (type) {
|
||||
case Playlist.ALL:
|
||||
playlistRepository.getPlaylists(false, -1).observe(activity, playlists -> playlistList.postValue(playlists));
|
||||
playlistRepository.getPlaylists(false, -1).observe(owner, playlists -> playlistList.postValue(playlists));
|
||||
break;
|
||||
case Playlist.DOWNLOADED:
|
||||
downloadRepository.getLivePlaylist().observe(activity, downloads -> playlistList.setValue(MappingUtil.mapDownloadToPlaylist(downloads)));
|
||||
downloadRepository.getLivePlaylist().observe(owner, downloads -> playlistList.setValue(MappingUtil.mapDownloadToPlaylist(downloads)));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -51,9 +52,9 @@ public class PlaylistCatalogueViewModel extends AndroidViewModel {
|
|||
return playlistList;
|
||||
}
|
||||
|
||||
public LiveData<List<Playlist>> getPinnedPlaylistList(FragmentActivity activity) {
|
||||
public LiveData<List<Playlist>> getPinnedPlaylistList(LifecycleOwner owner) {
|
||||
pinnedPlaylistList = new MutableLiveData<>(new ArrayList<>());
|
||||
playlistRepository.getPinnedPlaylists(PreferenceUtil.getInstance(App.getInstance()).getServerId()).observe(activity, playlists -> pinnedPlaylistList.postValue(playlists));
|
||||
playlistRepository.getPinnedPlaylists(PreferenceUtil.getInstance(App.getInstance()).getServerId()).observe(owner, playlists -> pinnedPlaylistList.postValue(playlists));
|
||||
return pinnedPlaylistList;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.app.Application;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
|
@ -34,9 +35,9 @@ public class PlaylistPageViewModel extends AndroidViewModel {
|
|||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Song>> getPlaylistSongLiveList(FragmentActivity activity) {
|
||||
public LiveData<List<Song>> getPlaylistSongLiveList(LifecycleOwner owner) {
|
||||
if (isOffline) {
|
||||
downloadRepository.getLiveDownloadFromPlaylist(playlist.getId()).observe(activity, downloads -> playlistSongLiveList.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
downloadRepository.getLiveDownloadFromPlaylist(playlist.getId()).observe(owner, downloads -> playlistSongLiveList.postValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
} else {
|
||||
playlistSongLiveList = playlistRepository.getPlaylistSongs(playlist.getId());
|
||||
}
|
||||
|
|
@ -61,9 +62,9 @@ public class PlaylistPageViewModel extends AndroidViewModel {
|
|||
return isOffline;
|
||||
}
|
||||
|
||||
public LiveData<Boolean> isPinned(FragmentActivity activity) {
|
||||
public LiveData<Boolean> isPinned(LifecycleOwner owner) {
|
||||
MutableLiveData<Boolean> isPinnedLive = new MutableLiveData<>();
|
||||
playlistRepository.getPinnedPlaylists(PreferenceUtil.getInstance(App.getInstance()).getServerId()).observe(activity, playlists -> isPinnedLive.postValue(playlists.contains(playlist)));
|
||||
playlistRepository.getPinnedPlaylists(PreferenceUtil.getInstance(App.getInstance()).getServerId()).observe(owner, playlists -> isPinnedLive.postValue(playlists.contains(playlist)));
|
||||
return isPinnedLive;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import android.text.TextUtils;
|
|||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
|
|
@ -47,7 +48,7 @@ public class SongListPageViewModel extends AndroidViewModel {
|
|||
downloadRepository = new DownloadRepository(application);
|
||||
}
|
||||
|
||||
public LiveData<List<Song>> getSongList(FragmentActivity activity) {
|
||||
public LiveData<List<Song>> getSongList(LifecycleOwner owner) {
|
||||
songList = new MutableLiveData<>(new ArrayList<>());
|
||||
|
||||
switch (title) {
|
||||
|
|
@ -67,10 +68,10 @@ public class SongListPageViewModel extends AndroidViewModel {
|
|||
songList = songRepository.getStarredSongs(false, -1);
|
||||
break;
|
||||
case Song.DOWNLOADED:
|
||||
downloadRepository.getLiveDownload().observe(activity, downloads -> songList.setValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
downloadRepository.getLiveDownload().observe(owner, downloads -> songList.setValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
break;
|
||||
case Song.FROM_ALBUM:
|
||||
downloadRepository.getLiveDownloadFromAlbum(album.getId()).observe(activity, downloads -> songList.setValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
downloadRepository.getLiveDownloadFromAlbum(album.getId()).observe(owner, downloads -> songList.setValue(MappingUtil.mapDownloadToSong(downloads)));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue