diff --git a/app/src/main/java/com/cappielloantonio/play/ui/adapter/SongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/ui/adapter/SongHorizontalAdapter.java index 3763809c..aa8f88c3 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/adapter/SongHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/adapter/SongHorizontalAdapter.java @@ -9,9 +9,6 @@ import androidx.annotation.NonNull; import androidx.media3.common.util.UnstableApi; import androidx.recyclerview.widget.RecyclerView; -import com.bumptech.glide.load.resource.bitmap.CenterCrop; -import com.bumptech.glide.load.resource.bitmap.RoundedCorners; -import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions; import com.cappielloantonio.play.R; import com.cappielloantonio.play.databinding.ItemHorizontalTrackBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; @@ -19,7 +16,6 @@ import com.cappielloantonio.play.interfaces.ClickCallback; import com.cappielloantonio.play.subsonic.models.Child; import com.cappielloantonio.play.util.Constants; import com.cappielloantonio.play.util.DownloadUtil; -import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MusicUtil; import java.util.ArrayList; @@ -51,7 +47,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter 0 && songs.get(position - 1) != null && songs.get(position - 1).getDiscNumber() < songs.get(position).getDiscNumber())) { + if (!isCoverVisible && (position > 0 && songs.get(position - 1) != null && songs.get(position - 1).getDiscNumber() != null && songs.get(position).getDiscNumber() != null && songs.get(position - 1).getDiscNumber() < songs.get(position).getDiscNumber())) { holder.item.differentDiskDivider.setVisibility(View.VISIBLE); } } @@ -107,8 +103,8 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter(songs)); - bundle.putInt(Constants.ITEM_POSITION, getBindingAdapterPosition()); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(MusicUtil.limitPlayableMedia(songs, getBindingAdapterPosition()))); + bundle.putInt(Constants.ITEM_POSITION, MusicUtil.getPlayableMediaPosition(getBindingAdapterPosition())); click.onMediaClick(bundle); } diff --git a/app/src/main/java/com/cappielloantonio/play/util/Constants.kt b/app/src/main/java/com/cappielloantonio/play/util/Constants.kt index 9e44ba09..e5207548 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/Constants.kt +++ b/app/src/main/java/com/cappielloantonio/play/util/Constants.kt @@ -65,4 +65,7 @@ object Constants { const val MEDIA_BEST_OF = "MEDIA_BEST_OF" const val DOWNLOAD_URI = "rest/download" + + const val PLAYABLE_MEDIA_LIMIT = 100 + const val PRE_PLAYABLE_MEDIA = 15 } \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java index c54a09e8..c962e1b5 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/MusicUtil.java @@ -9,6 +9,7 @@ import android.text.Html; import android.util.Log; import com.cappielloantonio.play.App; +import com.cappielloantonio.play.subsonic.models.Child; import java.util.ArrayList; import java.util.List; @@ -192,6 +193,21 @@ public class MusicUtil { } } + public static List limitPlayableMedia(List toLimit, int position) { + if (!toLimit.isEmpty() && toLimit.size() > Constants.PLAYABLE_MEDIA_LIMIT) { + int from = position < Constants.PRE_PLAYABLE_MEDIA ? 0 : position - Constants.PRE_PLAYABLE_MEDIA; + int to = Math.min(from + Constants.PLAYABLE_MEDIA_LIMIT, toLimit.size()); + + return toLimit.subList(from, to); + } + + return toLimit; + } + + public static int getPlayableMediaPosition(int initialPosition) { + return initialPosition > Constants.PLAYABLE_MEDIA_LIMIT ? Constants.PRE_PLAYABLE_MEDIA : initialPosition; + } + private static ConnectivityManager getConnectivityManager() { return (ConnectivityManager) App.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); }