diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java index b9a8fc3f..daf2dbc5 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java @@ -26,6 +26,8 @@ import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.service.MediaService; import com.cappielloantonio.play.ui.activity.MainActivity; +import com.cappielloantonio.play.util.DownloadUtil; +import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.viewmodel.PlaylistPageViewModel; import com.google.common.util.concurrent.ListenableFuture; @@ -104,7 +106,13 @@ public class PlaylistPageFragment extends Fragment { if (item.getItemId() == R.id.action_download_playlist) { playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> { if (isVisible() && getActivity() != null) { - // DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName()); + DownloadUtil.getDownloadTracker(requireContext()).download( + MappingUtil.markPlaylistMediaItems( + MappingUtil.mapMediaItems(requireContext(), songs, false), + playlistPageViewModel.getPlaylist().getId(), + playlistPageViewModel.getPlaylist().getName() + ) + ); } }); return true; diff --git a/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java index d4261a36..9869daa0 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/MappingUtil.java @@ -197,7 +197,7 @@ public class MappingUtil { return genres; } - public static MediaItem mapMediaItem(Context context, Song song, boolean isForStreaming) { + public static MediaItem mapMediaItem(Context context, Song song, boolean stream) { Bundle bundle = new Bundle(); bundle.putString("id", song.getId()); bundle.putString("albumId", song.getAlbumId()); @@ -207,7 +207,7 @@ public class MappingUtil { .setMediaId(song.getId()) .setMediaMetadata( new MediaMetadata.Builder() - .setMediaUri(isForStreaming ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song)) + .setMediaUri(stream ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song)) .setTitle(MusicUtil.getReadableString(song.getTitle())) .setTrackNumber(song.getTrackNumber()) .setDiscNumber(song.getDiscNumber()) @@ -217,17 +217,36 @@ public class MappingUtil { .setExtras(bundle) .build() ) - .setUri(isForStreaming ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song)) + .setUri(stream ? MusicUtil.getSongStreamUri(context, song) : MusicUtil.getSongDownloadUri(song)) .build(); } - public static ArrayList mapMediaItems(Context context, List songs, boolean isForStreaming) { + public static ArrayList mapMediaItems(Context context, List songs, boolean stream) { ArrayList mediaItems = new ArrayList(); for (Song song : songs) { - mediaItems.add(mapMediaItem(context, song, isForStreaming)); + mediaItems.add(mapMediaItem(context, song, stream)); } return mediaItems; } + + public static MediaItem markPlaylistMediaItem(MediaItem mediaItem, String playlistId, String playlistName) { + if (mediaItem.mediaMetadata.extras != null) { + mediaItem.mediaMetadata.extras.putString("playlistId", playlistId); + mediaItem.mediaMetadata.extras.putString("playlistName", playlistName); + } + + return mediaItem; + } + + public static ArrayList markPlaylistMediaItems(ArrayList mediaItems, String playlistId, String playlistName) { + ArrayList toReturn = new ArrayList(); + + for(MediaItem mediaItem: mediaItems) { + toReturn.add(markPlaylistMediaItem(mediaItem, playlistId, playlistName)); + } + + return toReturn; + } }