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