fix: disallow duplicate songs in queue

This commit is contained in:
eddyizm 2025-11-10 10:53:16 -08:00
parent b2e3596d87
commit 6448cc598d
No known key found for this signature in database
GPG key ID: CF5F671829E8158A

View file

@ -121,6 +121,15 @@ public class QueueRepository {
} }
} }
private boolean isMediaInQueue(List<Queue> queue, Child media) {
if (queue == null || media == null) return false;
return queue.stream().anyMatch(queueItem ->
queueItem != null && media.getId() != null &&
queueItem.getId().equals(media.getId())
);
}
public void insertAll(List<Child> toAdd, boolean reset, int afterIndex) { public void insertAll(List<Child> toAdd, boolean reset, int afterIndex) {
try { try {
List<Queue> media = new ArrayList<>(); List<Queue> media = new ArrayList<>();
@ -134,8 +143,14 @@ public class QueueRepository {
media = getMediaThreadSafe.getMedia(); media = getMediaThreadSafe.getMedia();
} }
for (int i = 0; i < toAdd.size(); i++) { List<Child> filteredToAdd = toAdd;
Queue queueItem = new Queue(toAdd.get(i)); final List<Queue> finalMedia = media;
filteredToAdd = toAdd.stream()
.filter(child -> !isMediaInQueue(finalMedia, child))
.collect(Collectors.toList());
for (int i = 0; i < filteredToAdd.size(); i++) {
Queue queueItem = new Queue(filteredToAdd.get(i));
media.add(afterIndex + i, queueItem); media.add(afterIndex + i, queueItem);
} }