mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 09:33:33 +00:00
fix: disallow duplicate songs in queue (#252)
This commit is contained in:
commit
a79543569d
1 changed files with 17 additions and 2 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue