From 8f72e4234c144f05f2d27880109f7368f2bcd1f0 Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Wed, 28 Jul 2021 18:29:26 +0200 Subject: [PATCH] Instant mix implementation --- .../play/adapter/DiscoverSongAdapter.java | 18 +++++++++++------- .../play/repository/AlbumRepository.java | 9 ++++----- .../play/ui/fragment/HomeFragment.java | 6 +++--- .../play/ui/fragment/LoginFragment.java | 3 +++ 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java index 221ade4b..83c21204 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java @@ -86,6 +86,16 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter opener = new ArrayList<>(); + opener.add(songs.get(getBindingAdapterPosition())); + MusicPlayerRemote.openQueue(opener, 0, true); + + QueueRepository queueRepository = new QueueRepository(App.getInstance()); + queueRepository.insertAllAndStartNew(opener); + + activity.isBottomSheetInPeek(true); + activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); + SongRepository songRepository = new SongRepository(App.getInstance()); songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() { @Override @@ -95,13 +105,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter media) { - QueueRepository queueRepository = new QueueRepository(App.getInstance()); - List mix = queueRepository.insertMix((ArrayList) media); - - activity.isBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo((Song) media.get(0)); - - MusicPlayerRemote.openQueue((List) media, 0, true); + MusicPlayerRemote.enqueue((List) media); } }); } diff --git a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java index b3c92c24..381da01e 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/AlbumRepository.java @@ -7,7 +7,6 @@ import androidx.lifecycle.MutableLiveData; import com.cappielloantonio.play.App; import com.cappielloantonio.play.model.Album; -import com.cappielloantonio.play.subsonic.api.albumsonglist.AlbumSongListClient; import com.cappielloantonio.play.subsonic.models.ResponseStatus; import com.cappielloantonio.play.subsonic.models.SubsonicResponse; import com.cappielloantonio.play.util.MappingUtil; @@ -22,18 +21,18 @@ import retrofit2.Response; public class AlbumRepository { private static final String TAG = "AlbumRepository"; - private AlbumSongListClient albumSongListClient; + private Application application; private MutableLiveData> listLiveRecentlyAddedAlbums = new MutableLiveData<>(); private MutableLiveData> listLiveMostPlayedAlbums = new MutableLiveData<>(); private MutableLiveData> listLiveRecentlyPlayedAlbums = new MutableLiveData<>(); public AlbumRepository(Application application) { - albumSongListClient = App.getSubsonicClientInstance(application, false).getAlbumSongListClient(); + this.application = application; } public LiveData> getListLiveAlbums(String type, int size) { - albumSongListClient + App.getSubsonicClientInstance(application, false).getAlbumSongListClient() .getAlbumList2(type, size, 0) .enqueue(new Callback() { @Override @@ -74,7 +73,7 @@ public class AlbumRepository { public MutableLiveData> getStarredAlbums() { MutableLiveData> starredAlbums = new MutableLiveData<>(); - albumSongListClient + App.getSubsonicClientInstance(application, false).getAlbumSongListClient() .getStarred2() .enqueue(new Callback() { @Override diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java index 512d730f..6214a50d 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/HomeFragment.java @@ -192,13 +192,13 @@ public class HomeFragment extends Fragment { } private void initStarredTracksView() { - bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 5, GridLayoutManager.HORIZONTAL, false)); bind.starredTracksRecyclerView.setHasFixedSize(true); starredSongAdapter = new SongHorizontalAdapter(activity, requireContext(), getChildFragmentManager()); bind.starredTracksRecyclerView.setAdapter(starredSongAdapter); homeViewModel.getStarredTracks().observe(requireActivity(), songs -> { if(bind != null) bind.homeStarredTracksSector.setVisibility(!songs.isEmpty() ? View.VISIBLE : View.GONE); + bind.starredTracksRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), (songs.size() / 5) > 0 ? 5 : songs.size() % 5, GridLayoutManager.HORIZONTAL, false)); starredSongAdapter.setItems(songs); }); @@ -207,13 +207,13 @@ public class HomeFragment extends Fragment { } private void initStarredAlbumsView() { - bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 5, GridLayoutManager.HORIZONTAL, false)); bind.starredAlbumsRecyclerView.setHasFixedSize(true); starredAlbumAdapter = new AlbumHorizontalAdapter(activity, requireContext(), getChildFragmentManager()); bind.starredAlbumsRecyclerView.setAdapter(starredAlbumAdapter); homeViewModel.getStarredAlbums().observe(requireActivity(), albums -> { if(bind != null) bind.homeStarredAlbumsSector.setVisibility(!albums.isEmpty() ? View.VISIBLE : View.GONE); + bind.starredAlbumsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), (albums.size() / 5) > 0 ? 5 : albums.size() % 5, GridLayoutManager.HORIZONTAL, false)); starredAlbumAdapter.setItems(albums); }); @@ -222,13 +222,13 @@ public class HomeFragment extends Fragment { } private void initStarredArtistsView() { - bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 5, GridLayoutManager.HORIZONTAL, false)); bind.starredArtistsRecyclerView.setHasFixedSize(true); starredArtistAdapter = new ArtistHorizontalAdapter(activity, requireContext(), getChildFragmentManager()); bind.starredArtistsRecyclerView.setAdapter(starredArtistAdapter); homeViewModel.getStarredArtists().observe(requireActivity(), artists -> { if(bind != null) bind.homeStarredArtistsSector.setVisibility(!artists.isEmpty() ? View.VISIBLE : View.GONE); + bind.starredArtistsRecyclerView.setLayoutManager(new GridLayoutManager(requireContext(), (artists.size() / 5) > 0 ? 5 : artists.size() % 5, GridLayoutManager.HORIZONTAL, false)); starredArtistAdapter.setItems(artists); }); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java index 1b979fe3..d3a9e94d 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/LoginFragment.java @@ -107,6 +107,9 @@ public class LoginFragment extends Fragment { PreferenceUtil.getInstance(requireContext()).setPassword(null); PreferenceUtil.getInstance(requireContext()).setToken(token); PreferenceUtil.getInstance(requireContext()).setSalt(salt); + return; } + + App.getSubsonicClientInstance(requireContext(), true); } }