feat(genre): show parent genres by default with sub-genre toggle

- Default view shows only parent genres (less cluttered like Qobuz)
- When selecting a parent, filtering includes all its sub-genres
- Added "Show all sub-genres" toggle for granular control
- Store now tracks parent/child relationships for proper filtering
- getFilterGenreNames() returns selected + children for filtering
This commit is contained in:
vicrodh committed 2026-02-02 10:26:21 -06:00
1 parent d2544dceb9
commit 589e6071c4
4 files changed
+124 -41

No files matched your search

+6 -5
View File
@@ -19,7 +19,7 @@
import {
getSelectedGenreId,
getSelectedGenreIds,
getSelectedGenreNames,
getFilterGenreNames,
hasActiveFilter as hasGenreFilter
} from '$lib/stores/genreFilterStore';
import { setPlaybackContext } from '$lib/stores/playbackContextStore';
@@ -475,11 +475,12 @@
}
function filterAlbumsByGenre(albums: AlbumCardData[]): AlbumCardData[] {
const selectedGenreNames = getSelectedGenreNames();
if (selectedGenreNames.length === 0) return albums;
// Filter albums whose genre matches any of the selected genres (case-insensitive)
// getFilterGenreNames returns selected genres + all children of selected parent genres
const filterGenreNames = getFilterGenreNames();
if (filterGenreNames.length === 0) return albums;
// Filter albums whose genre matches any of the filter genres (case-insensitive)
return albums.filter(album =>
selectedGenreNames.some(genreName =>
filterGenreNames.some(genreName =>
album.genre.toLowerCase().includes(genreName.toLowerCase())
)
);