fix(blacklist): filter blacklisted tracks from queue operations

This commit is contained in:
vicrodh committed 2026-02-02 14:32:17 -06:00
1 parent f87e0bfe70
commit 6ecd40b703
1 file changed
+44 -10
@@ -1125,7 +1125,14 @@
}
function buildQueueTracks(tracks: DisplayTrack[]) {
const queueTracks = tracks.map(t => ({
// Filter out blacklisted artists before building queue
const filteredTracks = tracks.filter(t => {
if (t.isLocal) return true; // Local tracks are never blacklisted
if (!t.artistId) return true; // No artist ID, can't check blacklist
return !isArtistBlacklisted(t.artistId);
});
const queueTracks = filteredTracks.map(t => ({
id: t.isLocal ? Math.abs(t.id) : t.id,
title: t.title,
artist: t.artist || 'Unknown Artist',
@@ -1140,7 +1147,7 @@
artist_id: t.isLocal ? null : (t.artistId ?? null),
}));
const localIds = tracks
const localIds = filteredTracks
.filter(t => t.isLocal)
.map(t => Math.abs(t.id));
@@ -1399,9 +1406,18 @@
const allTracks = displayTracks;
if (allTracks.length === 0) return;
// Filter out blacklisted tracks
const playableTracks = allTracks.filter(t => {
if (t.isLocal) return true;
if (!t.artistId) return true;
return !isArtistBlacklisted(t.artistId);
});
if (playableTracks.length === 0) return;
// Set playback context for playlist
if (playlist) {
const trackIds = allTracks
const trackIds = playableTracks
.filter(t => !t.isLocal) // Only Qobuz tracks in context
.map(t => t.id);
@@ -1421,8 +1437,8 @@
try {
await setPlaylistQueue(0);
// Play first track (handle local vs Qobuz)
const firstTrack = allTracks[0];
// Play first playable track (handle local vs Qobuz)
const firstTrack = playableTracks[0];
if (firstTrack.isLocal && onLocalTrackPlay) {
const localTrack = localTracks.find(t => t.id === Math.abs(firstTrack.id));
if (localTrack) onLocalTrackPlay(localTrack);
@@ -1467,14 +1483,23 @@
const allTracks = displayTracks;
if (allTracks.length === 0) return;
// Filter out blacklisted tracks
const playableTracks = allTracks.filter(t => {
if (t.isLocal) return true;
if (!t.artistId) return true;
return !isArtistBlacklisted(t.artistId);
});
if (playableTracks.length === 0) return;
// Collect local track IDs to add to set
const localIds = allTracks
const localIds = playableTracks
.filter(t => t.isLocal)
.map(t => Math.abs(t.id));
// Add in reverse order so first track ends up right after current
for (let i = allTracks.length - 1; i >= 0; i--) {
const t = allTracks[i];
for (let i = playableTracks.length - 1; i >= 0; i--) {
const t = playableTracks[i];
try {
await invoke('add_to_queue_next', {
track: {
@@ -1507,7 +1532,16 @@
const allTracks = displayTracks;
if (allTracks.length === 0) return;
const queueTracks = allTracks.map(t => ({
// Filter out blacklisted tracks
const playableTracks = allTracks.filter(t => {
if (t.isLocal) return true;
if (!t.artistId) return true;
return !isArtistBlacklisted(t.artistId);
});
if (playableTracks.length === 0) return;
const queueTracks = playableTracks.map(t => ({
id: t.isLocal ? Math.abs(t.id) : t.id,
title: t.title,
artist: t.artist || 'Unknown Artist',
@@ -1523,7 +1557,7 @@
}));
// Collect local track IDs
const localIds = allTracks
const localIds = playableTracks
.filter(t => t.isLocal)
.map(t => Math.abs(t.id));